Вы не можете объявить
List<int> list = ...
, но вы можете безопасно объявить,
List<Integer> list = new ArrayList<>()
Integer
класс соответствует требуемой подписи (он реализует Comparable<Integer>
).
Поэтому, когда вы сделаете это, все будет в порядке
List<Integer> list = new ArrayList<>()
list.add(13) // autoboxing converts int to Integer
int value = list.get(0) // autoboxing converts Integer back to int
В качестве дополнительной заметки, пожалуйста, помните, что можно добавить null
-s в этот список, поэтому с NPE будет взорвано следующее:
List<Integer> list = new ArrayList<>()
list.add(null) // null reference is okay
int value = list.get(0) // throws, we got null Integer reference,
// that cannot be converted to a primitive
Если вам когда-нибудь понадобится это сделать, вы можете сделать:
Integer value = list.get(0)
if (null != value) {
int primitive = value // safe, because non-null
}