Можно ли увеличить pool Integerов в Java

130
09 сентября 2019, 09:00

Известно, если сравнивать 2 объекта типа Integer через == в диапазоне от -128 до 127, то будут сравнивать значения в этих объектах, а если число не входит в этот диапазон, то будут сравниваться ссылки на объекты. Вопрос заключается в том можно ли увеличить размер этого poolа, если да, то как? Чтобы сравнивать и бОльшие числа через == Например чтобы стало так:

Integer a = 800;
Integer b = 800;
System.out.println(a == b); //true
Answer 1

В обоих случаях сравниваются ссылки. Просто по очевидным причинам для чисел из пула равенство ссылок будет равенством и значений. Но использовать это - крайне опрометчивое решение, так как кэширование чисел - это особенность реализации конкретной версии конкретной JVM, а значит ваша программа может не работать на другой JVM или даже может перестать работать в следующей версии этой же JVM.

Изменить размер кэша в HotSpot вы всё же можете, указав ключ -XX:AutoBoxCacheMax=<размер>.

READ ALSO
Переход к активности по нажатию кнопок в уведомлении

Переход к активности по нажатию кнопок в уведомлении

В уведомлении присутствуют 3 кнопкиПо нажатию каждой из них должна открываться активность и выполняться определенное действие

134
Извлечь данные из SessionStorage

Извлечь данные из SessionStorage

При открытии сайта некоторые данные хранятся в SessionStorage в JSONКак их оттуда можно вытащить?

124
Совместимость JDK 11 и JRE 8

Совместимость JDK 11 и JRE 8

Будет ли приложение, написанное на JDK 11, работать у пользователя, у которого установлен JRE 8? Если нет, то как сделать так? (кроме как устанавливать...

147
Что значит &lt;T extends SomeCreatedClass&gt;, и зачем оно?

Что значит <T extends SomeCreatedClass>, и зачем оно?

Есть следующая конструкция

119