instanceof关键字介绍
instanceof关键字在java当中严格意义上来讲是一个双目运算符,用来测试一个对象是不是另一个类(接口)的实例,或者直接或者间接子类或者实现类。
对象 /null instanceof interface/类/抽象类
boolean result = obj instanceof Class if(obj instanceof Object){}
Object必须是引用类型
obj必须是引用类型不能是基本类型
@Test public void test02(){ System.out.println(4 instanceof Object); } //错误写法
instanceof 运算符只能作为对象的判断
当引用类型是枚举类型的时候。 public static void getShowAllInstance(){ for (ProjectEnums value : ProjectEnums.values()) { if(value instanceof ProjectEnums){ System.out.println(value.getProjectName()); } // 施工项目 // 建设项目 // 图纸项目 // 输送项目 } }
@Test public void Test03(){ System.out.println("-----------------------"); System.out.println(String.class instanceof Class); System.out.println(Class.class instanceof Class); boolean result = Class.class instanceof Object; System.out.println(result); }
obj 为null
java分两种数据类型,一种是基本数据类型,一共八中,另一种是引用类型,包括类、接口、数组、枚举和特殊的null类型,null类型没有名字,null引用时null类型的唯一可能的值,null引用可以转换成任意引用类型,null可以使任意引用类型的特殊符号。
javase当中对于instanceof规范的规定是如果obj是null,返回FALSE
@Test public void Test04(){ System.out.println(null instanceof Class);//false System.out.println(null instanceof Object);//false System.out.println(null instanceof String);//false }
obj 为类的实例对象
没啥可说的TRUE
obj 为接口实现类的实例
是实现类是TRUE,不是FALSE