我正在寻找一个很好的模式来执行以下操作:我有一个类FooBar<A,B>
,我知道A
具有一个带有单个B
参数的构造函数。我想有一个受保护的方法FooBar
具有以下特征:Java泛型:使用单个构造函数参数实例化A B
protected A chuckNorris42(B b); // intent: return new A(b)
当然上面所说的“意图”是不是编译。作为一种变通方法我做了这个方法抽象的,在这里我实例FooBar
与具体类的地步,我实现chuckNorris42
在线:
FooBar<Chuck, Norris> = new FooBar<Chuck, Norris>() {
protected Chuck chuckNorris42(Norris norris) {
return new Chuck(norris);
}
}
它的工作原理,但我不知道是否有实现同样的事情更好或更清洁的方式所以我决定在这里提出问题。
坎,没有按类型擦除禁止直接将这样的东西写入泛型类? – 2012-04-05 08:26:45
AFAIK无法访问一般参数的类 – 2012-04-05 08:26:53
是的,抱歉。你应该把一个Chuck类转换成一个函数。 – 2012-04-05 08:38:36