instanceof 关键字与isInstance方法

package com.wxw;
/** 
* @author 作者 wxw
* @version 创建时间:2019年8月15日 上午11:22:59 
* 类说明 
*/
/**
 * instanceof 关键字与isInstance方法
 * 
 * 关于instanceof 关键字,它返回一个boolean类型的值,意在告诉我们对象是不是某个特定的类型实例。
 * 
 * 例如,在强制转换前利用instanceof检测obj是不是Animal类型的实例对象,
 *  如果返回true再进行类型转换, 这样可以避免抛出类型转换的异常(ClassCastException)
 * 
 * 【区别】1,只被用于对象引用变量,检查左边对象是不是右边类或接口的实例化。如果被测对象是null值,
 *     则测试结果总是false,例如: 
 *            //判断这个对象是不是这种类型
 *              obj.instanceof(class)
 *        2,isInstance 关键字,则是Class类的Native方法,其中obj是被测试的对象或者变量,
 *  如果obj是调用这个方法的class或接口的实例,则返回true。如果被检测的对象是null或者基本类型,
 *  那么返回值是false,例如:
 *          //判断这个对象能不能被转化为这个类
 *           class.inInstance(obj)
 * @author Administrator
 *
 */


public class AboutInstanceDemo {
       
	   public static void main(String[] args) {
		
		   D d=new D();	   
		   if(d instanceof D){
			   System.out.println("确定d是D类型的实例");
		   }
		   cast2(d); 
	}
	   
	   public static void cast2(Object obj){
		   
	        //instanceof关键字
	        if(obj instanceof D){
	            D animal= (D) obj;
	            System.out.println(animal);
	        }

	        //isInstance方法
	        if(D.class.isInstance(obj)){
	            D d= (D) obj;
	            System.err.println(d);
	        }
	  }
	 
}

class D{
	
	static{
		System.out.println("静态时期加载   Loading D ");
	}
}
class E{
	static{
		System.out.println("静态时期加载   Loading E ");
	}
}

 

你可能感兴趣的:(JAVA基础知识)