在這裏,我有一點好奇:instanceof運算符與嵌套類
if (!(Outer instanceof Outer.Nested))
{
System.out.println("IT IS NOT THE SAME!!");
}
爲什麼編譯器不明白,Outer.Nested
沒有延伸Outer
也不可能是它的一個實例,因此給回一個編譯錯誤?
請注意,如果這是其他方式:Outer.Nested instanceof Outer
它不會工作。
在這裏,我有一點好奇:instanceof運算符與嵌套類
if (!(Outer instanceof Outer.Nested))
{
System.out.println("IT IS NOT THE SAME!!");
}
爲什麼編譯器不明白,Outer.Nested
沒有延伸Outer
也不可能是它的一個實例,因此給回一個編譯錯誤?
請注意,如果這是其他方式:Outer.Nested instanceof Outer
它不會工作。
首先,這種說法無法編譯,如果Outer
是一個類類型:
if (!(Outer instanceof Outer.Nested)) // Outer is not an expression: Expression expected
沒有在這個問題沒有一種高精度背景下,我想你會處理這樣的場景:
public class Outer {
private class Inner {
}
public static void main(String[] args) {
Test t = new Test();
Inner i = t.new Inner();
System.out.println(i instanceof Test); //inconvertible types => normal
System.out.println(t instanceof Inner); // inconvertible types => normal
}
}
這一切都正常發生。
如果您的場景是類似的:聽起來像是您的編譯器進程的問題。
如果您的情況不相似:請更新您的問題並提供更多信息。
RelationalExpression:
....
RelationalExpression instanceof ReferenceType
類型instanceof運算符的操作數RelationalExpression必須是引用類型或null類型的;否則,會發生編譯時錯誤。
換句話說,instanceof的左側必須是對某個對象的引用或null
。 Outer
看起來像一個類名,它既不是那些東西。
您可能正在尋找Class.isAssignableFrom(),它告訴您一個類是否是另一個類的超類。
是'Outer'和'Outer.Nested'兩個類嗎? – LaurentG
請顯示'Outer'類 – Mik378