instanceof运算符只能用于对象引用变量,可以用它来检测对象是否是某种类型
即使被测试对象不是运算符右边的类类型的实际实例化,如果被比较的对象是一个与右边类型兼容的赋值,则instanceof仍然会返回true.例- class A{}
- class B extends A{
- public static void main(String args[]){
- A myA = new B();
- m2(myA);
- }
- public static void m2(A a){
- if(a instanceof B)
- ((B)a).doBstuff();
- }
- public static void doBstuff(){
- System.out.println("'a' refers to a B");
- }
- }
复制代码 利用instanceof运算符能防止程序试图进行非法的向下强制转换。这意味着如果在Object类型上使用instanceof运算符,则任何对象引用都将求值为true.- B b = new B();
- if(b instanceof Object){
- System.out.println("b is definitely an Object");
- }
复制代码 |