2

该列表可能同时包含整数和字符串值。在这种情况下,我应该创建对象列表,对吗?

List<Object> list = new ArrayList<Object>();

如何使用列表的整数条目执行简单的算术运算?

list.add(1);
list.add("ok");
list.add(2);
Integer a = list.get(0) - list.get(2); // does not work
4

3 回答 3

5

您需要将Objects 转换为 int,因为-未在 s 上定义运算符,Object并且 Java 不会自动将它们拆箱。

Integer a = ((Integer)list.get(0)) - ((Integer)list.get(2));
于 2012-01-18T12:12:35.007 回答
5

那是因为最终,list.get(0);是一个Object. 如果要对其进行算术运算,则必须对其进行强制转换:

Integer a = (Integer) list.get(0) - (Integer) list.get(2);
于 2012-01-18T12:13:06.427 回答
1

老实说,这是一个非常糟糕的设计。如果您想遍历该列表怎么办?您必须手动检查元素是字符串还是整数。泛型引入 Java 是有原因的。

你不能列出 2 个列表:一个用于字符串,一个用于整数。或者至少使用一个列表而不是使用字符串使用(通常未使用的)整数值?

于 2012-01-18T12:15:50.923 回答