Почему java.lang.Integer.valueOfflight шаблон? - PullRequest
9 голосов
/ 29 июня 2011

Почему java.lang.Integer.value для шаблона с наименьшим весом? Я пытался найти причину, но не смог.

Ответы [ 2 ]

15 голосов
/ 29 июня 2011

Если мы посмотрим на источник для valueOf, мы можем получить подсказку: Источник java.lang.Integer Строки 638-643:

public static Integer valueOf(int i) {
        assert IntegerCache.high >= 127;
        if (i >= IntegerCache.low && i <= IntegerCache.high)
             return IntegerCache.cache[i + (-IntegerCache.low)];
         return new Integer(i);
}

Похожекласс Integer поддерживает кэш объектов Integer для общих значений.Вместо того, чтобы создавать новый каждый раз, когда кто-то запрашивает valueOf, он просто возвращает ссылку на тот, который уже существует.Поэтому, если вы вызовете Integer.valueOf(1) несколько раз, вы получите каждый раз один и тот же объект обратно (не только эквивалентные объекты).

6 голосов
/ 29 июня 2011

Звучит так, будто вас попросили выполнить упражнение.

Если вы вызываете метод дважды с одним и тем же аргументом, он может вернуть один и тот же объект, тем самым ограничивая использование памяти.Это соответствует определению модели мухи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...