Список объектов. Операции с целочисленными записями
Список может содержать как целые, так и строковые значения. В этом случае я должен создать список объектов, верно?
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, потому что -
Оператор не определен на Object
s и 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 списка: один для строк и один для целых чисел. Или, по крайней мере, использовать один список, но вместо строк использовать (обычно неиспользуемое) целочисленное значение?