Rah*_*hak 8 java generics java-8
我要声明一个泛型类,将上三胞胎的工作- key,value和metadata。
该key和value字段是强制性的,但该metadata字段是可选的。
class Triplet<K,V,M>{
K key;
V value;
M metadata;
//setters and getters
}
Run Code Online (Sandbox Code Playgroud)
在使用上面的类时,我必须像下面一样初始化它 -
Triplet<Integer, String, String> t1 = new Triplet<>();
// Setters
Run Code Online (Sandbox Code Playgroud)
但对于某些用例metadata是可选的。所以当我null用作第三个类型参数时,编译器给出了一个错误 -
Triplet<Integer, String, null> t2 = new Triplet<>();
Run Code Online (Sandbox Code Playgroud)
我应该如何正确实例化适用于多种类型的参数化类型,其中使用站点指定的类型参数之一是可选的?
你可以使用Void例如
Triplet<Integer, String, Void> t2 = new Triplet<>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
362 次 |
| 最近记录: |