Список объектов. Операции с целочисленными записями - PullRequest
2 голосов
/ 18 января 2012

Список может содержать как целые, так и строковые значения. В этом случае я должен создать список объектов, верно?

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

Ответы [ 3 ]

5 голосов
/ 18 января 2012

Это потому, что в конечном итоге list.get(0); - это Object. Вы должны разыграть его, если хотите выполнить арифметические операции над ним:

Integer a = (Integer) list.get(0) - (Integer) list.get(2);
5 голосов
/ 18 января 2012

Вам необходимо привести Object s к int, потому что оператор - не определен на Object s, а Java не распаковывает их автоматически.

Integer a = ((Integer)list.get(0)) - ((Integer)list.get(2));
1 голос
/ 18 января 2012

Это действительно плохой дизайн, если честно. Что если вы хотите перебрать этот список? Вам придется вручную проверить, является ли элемент строкой или целым числом. Дженерики были введены в Java по определенной причине.

Разве вы не можете сделать 2 списка: один для строк и один для целых чисел. Или хотя бы использовать один список, но вместо строк использовать целочисленное значение (обычно неиспользуемое)?

...