我想声明一个适用于三胞胎的通用类-keyvaluemetadatakeyvalue字段是必填字段,但metadata字段是可选字段。

class Triplet<K,V,M>{
    K key;
    V value;
    M metadata;
    //setters and getters
}
使用上面的类时,我必须像下面这样初始化它-
Triplet<Integer, String, String> t1 = new Triplet<>();
// Setters
但是对于某些用例,metadata是可选的。因此,当我使用null作为第三个类型参数时,编译器给出了一个错误-
Triplet<Integer, String, null> t2 = new Triplet<>();
我应该如何正确实例化适用于多种类型的参数化类型,其中在使用站点指定的类型参数之一是可选的?

最佳答案

您可以使用Void例如

Triplet<Integer, String, Void> t2 = new Triplet<>();

07-27 17:37