首页 > 解决方案 > 为什么不能泛化参数类?

问题描述

当您定义参数类时,您只能使用固定数量的参数。

class Container<T> {
    ...
}

但是,如果您想创建一个具有多个值的 Map。您必须使用 aMap<K, List<V>>而不是Map<K, V1, V2, V3>为什么你不能定义类似的东西?

class Map<K, V, ...> {
    ...
}

标签: javaparametersparametric-polymorphism

解决方案


你可以,如果你实现一个Tuple有 3 个元素的类。

class Tuple3<T1, T2, T3> {
    private final T1 t1;
    private final T2 t2;
    private final T3 t3;

    // constructor, getters, ...
}

然后你可以使用它:

Map<K, Tuple3<V1, V2, V3>>

Map支持多种类型的不是责任。有关该主题的更多信息,请参阅关注点分离 (SoC)


推荐阅读