Насколько я понимаю, следующий код должен вывести "true", но когда я его запускаю, он выдает "false".
public class Test {
public static boolean testTrue() {
return true;
}
public static void main(String[] args) throws Exception {
Object trueResult = Test.class.getMethod("testTrue").invoke(null);
System.out.println(trueResult == Boolean.TRUE);
}
}
Согласно JLS §5.1.7. Конвертация бокса:
Если значение
pбудучи в штучной упаковке являетсяtrue,false, Аbyte, илиcharв диапазоне\u0000до\u007f, илиintилиshortномер между-128и127(включительно), то пустьr 1иr 2будет результаты любых двух боксерских преобразованийp. Это всегда тот случай, когдаr 1 == r 2.
Однако в случае метода, вызванного с помощью отражения, коробочное значение всегда создается с помощью new PrimitiveWrapper().
Пожалуйста, помогите мне понять это.