我试图编写以下代码,但错误发生在return super.getAge("Jack");
行它显示出";方法getAge((对于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;
}
}
因为您使用的new Callable()
将实例化一个匿名类作为Callable
的子级,而不是Parent
,所以super.getAge("jack")
指的是一个不存在的方法。
相反,切换到可以直接引用super.getAge("Jack")
的lambda定义:
Callable<Integer> call = () -> super.getAge("Jack");
try {
ageFuture = executorService.submit(call);
}
// etc...
或更短:
ageFuture = executorService.submit(() -> super.getAge("Jack"));
尝试Parent.super.getAge("jack")
,尽管我认为这不起作用。
如果没有,那么你唯一的选择就是制作一种桥接方法:
public class Child extends Parent {
private int superGetAge(String name) {
return super.getAge(name);
}
@Override
public int getAge(String name) {
.... return superGetAge("jack");
}
}
您正在使用"新的可调用{…}";
该类是从Object继承的。
您可以尝试将ParentgetAge((定义为一个静态方法,并使用调用它
Parent.getAge("Jack");