Tôi hơi bối rối: Tôi có một hàm, lấy đối tượng làm đối số. Nhưng trình biên dịch không phàn nàn nếu tôi chỉ vượt qua một nguyên thủy và thậm chí nhận ra một nguyên thủy boolean như Boolean Object. Tại sao vậy?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"
Lưu ý rằng boolean KHÔNG BAO GIỜ là một cá thể của Boolean. Bạn không bao giờ có thể vượt qua một nguyên thủy cho toán tử instanceof. Boolean nguyên thủy của bạn không bao giờ bước vào phương pháp này, boxing đã xảy ra khi các invocation đã xảy ra và phương pháp invocation chuyển đổi xảy ra! – Mishax