Java 有没有办法减少多个类型参数?

Java 有没有办法减少多个类型参数?,java,generics,lambda,Java,Generics,Lambda,我有一个非常通用的重类,我测试不同的方法来解决一个问题,这个类在很多不同的地方使用,每次我更改类型参数的数量时,我都必须修复所有我使用类型的地方的错误,即使我没有使用这个类的通用性 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 o

我有一个非常通用的重类,我测试不同的方法来解决一个问题,这个类在很多不同的地方使用,每次我更改类型参数的数量时,我都必须修复所有我使用类型的地方的错误,即使我没有使用这个类的通用性

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(){...}

public-class-HeavyGen{…}
//现在,在其他任何地方,我都必须这样做,并且每次都要重构我的代码
//更改类型参数的数量
公共重磅函数(){…}
//或者,这个@SupersSwarning看起来像是一个肮脏的补丁
@超级警告
公共重磅函数(){…}
那么:有没有一种方法可以改变
HeavyGen
类型参数的数量,而不必在不使用泛型的地方重构代码

我的想法是:

  • 使用将“封装”类型参数的类类型,如
    TypeBag
    ans,然后使用
    Container
    ,但它似乎不起作用

  • 由于这些类型参数主要在类内部使用,所以请使用方法类型参数来传递它们。到目前为止,我也没能成功

  • 有一个嵌套的类继承系统(比如
    CHILD.internal
    ),但是Java似乎也不喜欢(我越想它,就越希望能够做到这一点:D)


您只需将
容器重命名为
AbstractContainer
,并从中提取一个非通用的
容器
接口:

public interface Container {
    // put non-generic methods here
}
公共抽象类AbstractContainer实现容器{
//把泛型方法放在这里
}

现在,客户端代码可以使用
容器
,而无需携带泛型,实现可以扩展
抽象容器
,并且仍然能够使用/实现泛型方法。

如何限制/控制容器中类型参数的数量?(以后不再进行大规模重构)->请解释大规模重构的含义,以及如何控制、通过代码或简单地通过javadoc等进行控制?@linosays我的意思是,如果我需要更改容器的类型参数,无论我在何处使用容器类型(例如,对于函数返回或参数,不需要这些类型)我必须更改该函数的代码,以通过控制来修复它的类型参数我的意思是我不必做得很好,你不会对社区否决它感到惊讶。你的描述太混乱了,真的不可能理解你想要什么。或者描述你的原始问题(如果没有花哨的东西,可能是x-y问题),或者提取问题的技术核心并尽可能简单。现在你谈论的东西太多了,但都是非常详细的技术层面。不可能理解整个混乱局面。@HonzaZidek哦,我明白你的意思。我编辑了我的问题,希望现在更好你上次的编辑很好!
public abstract class AbstractContainer<...> implements Container {
    // put generic methods here
}