我的阶级结构是这样的:Java的泛型类型的推断
class A1,A2,..,An extends A;
class B1,B2,..,Bn extends B;
而且类转换成Ai
Bi
:
private B1 convert(A1 a1){}
...
private Bn convert(An an){}
我如何定义与像<? extends B> convert(<? extends A> a)
签名单一的公共方法? 现在我只有这种方法:
B convert(A a){
if(A.getClass().equals(A1.class)){
return convert((A1)a);
}...
}
我能使用的instanceof如果性能比较是重要的,该方法将被频繁调用?
只是一个想法:IMHO更优雅的解决方案将是在'A'中声明一个方法[最好是抽象的,如果'A'是抽象的]:'public B toB()',这将从调用者创建一个'B'实例。 – amit 2012-07-17 09:21:01
就这么简单!谢谢!为什么我没有想到它? – 2012-07-17 09:36:13
由于它似乎可以帮助您,因此我将其添加为代码捕捉的答案。很高兴我能帮上忙。 – amit 2012-07-17 09:42:01