Давайте предположим, что у меня есть класс:Java Autoboxing через метод
class A {
private Integer i;
public int getI() {
return i;
}
// Setter, etc.
}
и я пишу:
A a = // initializer
Integer b = a.getI();
сколько Целые там будет? Мое наивное чтение о Autoboxing/распаковке заставляет меня верить, что ответ 2, но если Geti() был:
public Integer getI();
, то ответ будет 1.
Ах, интернинг тоже! Небольшое наблюдение: безопасно ли использовать первый стиль? Если я использую второй стиль и позже сделаю другое назначение для b, будет ли a.i оставаться тем же или обновляться? – joeblubaugh
@ joeblubaugh Оба способа безопасны: 'java.lang.Integer' * неизменный *, поэтому он не может быть обновлен« за вашей спиной ». – dasblinkenlight