如果您有一个位于 jar 文件中的基类,如下所示:
public class A {
public void awesome(int i){
}
}
...由这些类(也在 jar 中)扩展,如下所示:
public class A1 extends A {
@Override
public void awesome(int i){
}
}
和
public class A2 extends A {
@Override
public void awesome(int i){
}
}
...是否可以以通用方式覆盖基本功能?
假设有一个通过匿名内部类添加的实现——你能编码这样整个匿名内部实现只出现一次吗?所以而不是:
public class Test {
public static void main(String args[]){
A1 mySpecialA1 = new A1(){
@Override
public void awesome(int i){
//awesome implementation
}
};
A2 mySpecialA2 = new A2(){
@Override
public void awesome(int i){
//awesome implementation
}
};
}
}
...你可以拥有(这是它崩溃的地方):
public class SpecialAFactory {
public static <T extends A> getSpecialA(){
return new T(){
@Override
public void awesome(int i){
//only once
}
};
}
}
因此,最终您将传入要获取其新匿名实例的子类。