Список объектов. Операции с целочисленными записями

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

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 ответа

Решение

Вам нужно разыграть Objectс int, потому что - Оператор не определен на Objects и Java не распаковывают их автоматически.

Integer a = ((Integer)list.get(0)) - ((Integer)list.get(2));

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

Integer a = (Integer) list.get(0) - (Integer) list.get(2);

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

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

Другие вопросы по тегам