在我的Java程序中,我想存储一个原始值列表。我可以这样做:
int x = 0;
double timestamp = 123.1d;
List<Object> data = new ArrayList<Object>();
data.add(x);
data.add(timestamp);
但问题是我不知道我在列表中存储了哪种对象。那么还有更好的方法吗?
答案 0 :(得分:7)
好吧,Double
,Integer
,Long
都属于Number
- 类。所以
List<Number>
可能适合。它正是它 - 一个List
个未指定的子类型。由于自动装箱你应该只能添加原语,但更好的做法是使用Wrapper类。
Number
- 类提供了获取Number
的不同表示形式的方法,例如doubleValue()。因此,您可以使用此方法将List<Number>
中的所有值转换为(作为示例)Double
。有关更多参考,请参阅Oracle documentation for Number。
答案 1 :(得分:2)
您可以使用List<Object>
并向其添加任何类型的对象。从List<Object>
返回对象时,您可以通过list.get(0).getClass()
获取对象类,或者您可以检查{{ 1}}。
答案 2 :(得分:1)
使用包装器类并使用 运算符实例来检查值的数据类型。 喜欢
Integer x = 0;
Double timestamp = 123.1d;
List<Object> data = new ArrayList<Object>();
data.add(x);
data.add(timestamp);
if(data.get(0) instance of Integer)
{
...
}
else if(data.get(0) instance of Double )
{
..
}