JAVA → Несколько неожиданное поведение кеширования при boxing-е
Недавно на The Daily WTF писали о том, как с помощью Reflection можно неплохо подпортить кровь коллегам.Допустим, у вас есть следующий код:
public class ConstantHolder {
public static final Integer THE_ANSWER_TO_LIFE_THE_UNIVERSE_AND_EVERYTHING = 42;
}
иpublic class TestBoxingVulnerability {
public static void main(String[] args) {
int theAnswer = ConstantHolder.THE_ANSWER_TO_LIFE_THE_UNIVERSE_AND_EVERYTHING;
System.out.println(theAnswer == 42);
}
}
Очевидно, что будет выведено true. Однако в проекте может оказаться такой код, который может изменить ситуацию в обратную сторону. Под катом приведён пример такого кода.