我想声明一个适用于三胞胎的通用类-key
,value
和metadata
。key
和value
字段是必填字段,但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<>();