我有一个类似
的类class A {
String key;
Double value;
}
现在值可以是double,long,int,fraction等。
我应该如何在同一个班级处理这个问题?
我应该将值设为Comparable
或Number
吗?
数字,因为这些值正在扩展数字,可比较,因为我希望这个类[和值]具有可比性。
答案 0 :(得分:4)
我建议您使用通用类型<T extends Number>
创建类。
class A<T extends Number> {
String key;
T value;
}
答案 1 :(得分:2)
您可以使用generics
并同时使用
class A<T extends Number & Comparable<T>> {
String key;
T value;
public A(String key, T value) {
this.key = key;
this.value = value;
}
}
由于Number
不是Comparable
,您可以使用intersection types
如上所示,类型参数T
(整数,长整数,双数)会对此感到满意,现在价值是Number
和Comparable
答案 2 :(得分:1)
它仅取决于您想要或需要对值类型做出的假设:
T
的值,请转到通用类型T
。Number
。Comparable
。Object
。答案 3 :(得分:1)
我无法添加评论,所以......如果按照Andrew's Answer的说法进行操作,那么初始化就像new A<Double>("a", 2.0d)
一样。我个人更喜欢将值定义为Number
。