我有一个非常通用的重载类,我在其中测试问题的不同方法,并且该类在许多不同的地方使用,并且每次更改类型参数的数量时,我都必须在所有使用该类型的地方都修复错误,即使我不使用该类型该类的通用性
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>
ans then use Container<BAG extends TypeBag>
,但似乎不起作用
由于这些类型参数主要在类内部使用,因此请对方法类型参数进行一些技巧来传递它们。到目前为止,我也没有设法使其正常工作。
有一个嵌套的类继承系统(例如<CHILD extends Container> CHILD.Inner
),但是Java似乎也不喜欢(我想得越多,我越喜欢能够做到这一点:D)
您可以简单地重命名Container<...>
为AbstractContainer<...>
并从中提取非通用Container
接口:
public interface Container {
// put non-generic methods here
}
public abstract class AbstractContainer<...> implements Container {
// put generic methods here
}
现在,客户端代码可以在Container
不携带泛型的情况下使用,并且实现可以扩展,AbstractContainer<...>
并且仍然能够使用/实现泛型方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句