我有一个非常通用的重型类,我正在测试不同方法来解决问题,并且这个类在许多不同的地方使用,每次我改变类型参数的数量,我都必须在使用类型的每个地方修复错误,即使我不使用该类的泛型。
public class HeavyGen<TYPE1, TYPE2, TYPE3, ETC>{...}
//now anywhere else i have to do either this and refactor my code at each
//change in the number of type parameters
public HeavyGen<?,?,?,?> func(){...}
//or this but @SupressWarning seem like a dirty fix
@SupressWarning
public HeavyGen func(){...}
那么:是否有一种方法可以在不必重构不使用泛型的代码的情况下更改HeavyGen
的类型参数数量?
我想到的主意:
使用一个类类型来“封装”类型参数,例如
TypeBag<TYPE1,TYPE2,TYPE3,ETC>
,然后使用Container<BAG extends TypeBag>
,但似乎不起作用由于这些类型参数大多在类内部使用,所以可以通过方法类型参数的技巧来传递它们。到目前为止,我还没有成功地使其工作。
拥有一个嵌套的类继承系统(类似于
<CHILD extends Container> CHILD.Inner
),但Java似乎也不喜欢它(我越想越希望能够做到这一点:D)