我试图写下面的代码,但错误发生在return super.getAge("Jack");
行它显示**“The method getAge()is undefined for the type Object”**。我想这里没有确定“超级”关键字。有没有人有任何建议,如何解决这个错误?非常感谢!
public class Parent {
public int getAge(String name) {
System.out.println("Get the age of the parent.");
return 40;
}
}
public class Child extends Parent {
@Override
public int getAge(String name) {
Future<Integer> ageFuture = null;
@Qualifier("XXX")
private ExecutorService executorService;
try {
ageFuture = executorService.submit(new Callable<Integer>() {
public int call() throws Exception {
return super.getAge("Jack");
}
});
} catch (Exception e) {
logger.error(" ", e);
}
return 10;
}
}
3条答案
按热度按时间s8vozzvw1#
因为你使用的
new Callable()
将示例化一个匿名类作为Callable
的子类,而不是Parent
,所以super.getAge("jack")
引用的是一个不存在的方法。相反,切换到可以直接引用
super.getAge("Jack")
的lambda定义:或更短:
628mspwn2#
试试
Parent.super.getAge("jack")
,虽然我不认为这会起作用。如果没有,那么你唯一的选择就是创建一个桥接方法:
uqjltbpv3#
您正在使用“new Callable {...}”动态地定义一个新类
这个类继承自Object。
您可以尝试将ParentgetAge()定义为静态方法并使用