我想學習java關於instanceof
運營商按照鏈接: - instanceof在接口中使用instanceof運算符時出錯?
但是,當我試圖運行它們下面的代碼: -
class InstanceofDemo {
public static void main(String[] args) {
Parent obj1 = new Parent();
Parent obj2 = new Child();
System.out.println("obj1 instanceof Parent: "
+ (obj1 instanceof Parent));
System.out.println("obj1 instanceof Child: "
+ (obj1 instanceof Child));
System.out.println("obj1 instanceof MyInterface: "
+ (obj1 instanceof MyInterface));
System.out.println("obj2 instanceof Parent: "
+ (obj2 instanceof Parent));
System.out.println("obj2 instanceof Child: "
+ (obj2 instanceof Child));
System.out.println("obj2 instanceof MyInterface: "
+ (obj2 instanceof MyInterface));
}
}
class Parent {}
class Child extends Parent implements MyInterface {}
interface MyInterface {}
我在編譯時得到以下錯誤:
./Child.java:1: error: cannot find symbol
class Child extends Parent implements MyInterface{
^
symbol: class MyInterface
InstanceOfDemo.java:9: error: cannot find symbol
System.out.println("obj1 instanceOf MyInterface" + (obj1 instanceof MyInterface));
^
symbol: class MyInterface
location: class InstanceOfDemo
InstanceOfDemo.java:12: error: cannot find symbol
System.out.println("obj1 instanceOf MyInterface" + (obj2 instanceof MyInterface));
^
symbol: class MyInterface
location: class InstanceOfDemo
3 errors
下面的目錄結構,其中SRC代碼放置: -
-rw-rw-r-- 1 ankit ankit 174 Oct 25 15:36 Child.class
-rw-rw-r-- 1 ankit ankit 31 Oct 25 15:36 Child.java
-rw-rw-r-- 1 ankit ankit 920 Oct 25 15:41 InstanceOfDemo.class
-rw-rw-r-- 1 ankit ankit 637 Oct 25 15:41 InstanceOfDemo.java
-rw-rw-r-- 1 ankit ankit 25 Oct 25 15:20 MyInterface
-rw-rw-r-- 1 ankit ankit 186 Oct 25 15:36 Parent.class
-rw-rw-r-- 1 ankit ankit 16 Oct 25 15:18 Parent.java
注:我刪除了接口實現從Child.java
和InstanceOfDemo.java
編譯和運行代碼。
編輯1: - 可以我認爲instanceof運算符不能與接口使用,因爲instanceof操作的按甲骨文definiton如下: -
instanceof運算的對象進行比較,以指定的類型。您可以使用它來測試對象是否是類的實例,子類的實例或實現特定接口的類的實例。
'MyInterface'似乎在不同的文件中定義,文件的名字甚至沒有'MyInterface.java'。因此.class文件沒有生成(因此編譯器沒有找到它) –
哇,這似乎需要7分鐘才能回答這個問題。 –