考虑以下:
public class Doer {
public static void doStuff(A a) {
System.out.println("a");
}
public static void doStuff(B b) {
System.out.println("b");
}
}
其中 B 扩展 A
还有一个像这样的通用类:
public class NewClass<T extends A> {
public void doSomething(T entity) {
Doer.doStuff(entity);
}
}
如果我按如下方式调用此方法,它将打印“a”
new NewClass<B>().doSomething(new B());
如何让它打印“b”?
提前致谢
编辑:一个肮脏的解决方案是改变
Doer.doStuff(entity);
至
if(entity instanceof B){
Doer.doStuff((B) entity);
}else {
Doer.doStuff(entity);
}
但是我正在寻找一个不使用 instanceof 的解决方案,这样当我创建一个扩展 A 的新类时,我不必向 NewClass 添加额外的 if (C intance of A) ...