關于instanceof的用法
先看兩個小程序:1、
1
public class IntegerTypeTest {
2
public static void main(String[] args){
3
String str = "abc";
4
boolean myBoolean = (str instanceof Integer); //compile time error
5
System.out.println(myBoolean);
6
}
7
}
2、
2

3

4

5

6

7

1 import java.util.*;
public class InstanceOfDemo {
2
3
public static void main(String[] args) {
4
System.out.println(new InstanceOfDemo() instanceof String); //compile time error
5
System.out.println(new InstanceOfDemo() instanceof Exception); //compile time error
6
System.out.println(new InstanceOfDemo() instanceof Object); //compilation and output true
7
8
System.out.println(new InstanceOfDemo() instanceof List); //compilation and output false
9
}
10
}
11
這兩個程序的編譯結果和我們預想的不一樣,第一個程序編譯結果是:
2

3

4

5

6

7

8

9

10

11


第二個程序編譯結果是:

產生這種錯誤的原因在于,instanceof運算符第一個操作數的類型應該是第二個操作數的父類、子類或者與第二個操作數的類型相同。否則編譯會出錯。