Я немного смущен: у меня есть функция, которая принимает объект как аргумент. Но компилятор не жалуется, если я просто передаю примитив и даже признаю булевский примитив как Boolean Object. Почему это так?java: boolean instanceOf Boolean?
public String test(Object value)
{
if (! (value instanceof Boolean)) return "invalid";
if (((Boolean) value).booleanValue() == true) return "yes";
if (((Boolean) value).booleanValue() == false) return "no";
return "dunno";
}
String result = test(true); // will result in "yes"
Обратите внимание, что логическое значение НИКОГДА не является экземпляром булева. Вы никогда не сможете передать примитиву оператору instanceof. Ваш логический примитив никогда не вводил этот метод, бокс произошел, когда произошел вызов и произошла конверсия вызова метода! – Mishax