我使用TreeMap添加<Integer,Long>
类型的条目。但是,我可能会遇到条目类型为<Long, Long>
的情况,我想构建一个可以处理这两种情况的TreeMap。到目前为止,我有
public class myClass {
public TreeMap<Integer, String> myClass(String fileToRead) {
....
TreeMap<Integer, String> map = new TreeMap<>();
map.put(Integer, String); //this is a for loop that iterates through input list
}
return map
}
如何添加可以是Integer或Long的通用密钥K?
编辑:我想包含其他类型,例如BigInteger
答案 0 :(得分:1)
两者的超类型都是数字,所以你可以使用这个
答案 1 :(得分:0)
您随时可以使用ReferenceType
运算符检查instanceof
并相应地工作:
if (obj instanceof Long) { ... }
if (obj instanceof Integer) { ... }
来自JLS:
RelationalExpression
instanceof
ReferenceType在运行时,如果
instanceof
的值不是RelationalExpression
,则null
运算符的结果为true,并且可以将引用(第15.16节)转换为{ReferenceType
1}}没有提出ClassCastException
。否则结果为false
。
答案 2 :(得分:0)
听起来你可能想要像
这样的东西public class MyClass<T extends Number> {
public TreeMap<T, String> myClass(String fileToRead) {
...
}
BigInteger
也会填写Number
帐单。
但是为了避免泛型的复杂化,我实际上建议始终使用Long
作为键类型甚至BigInteger
,除非您有强烈的要求不这样做。根据您使用的JVM(64位),Integer
对象可能甚至不会使用比Long
对象更少的空间。