更新时间:2022-04-12 10:29:00 来源:极悦 浏览14998次
在Java这种强类型语言中,经常会遇到类型转换、类型判断。今天极悦小编就来盘点一下Java中判断类型的方式。
instanceof是一个Java运算符,用来判断一个对象是否是一个类的实例。用法 :
boolean isInstance = obj instanceof Class
其中 obj 对于对象实例,Class 对于类名或者接口名,当 obj 通过 Class Example,或者其子类实例,或者其接口的实现类实例,全部返回 true,否则返回false。
需要注意的是,obj 必须是引用类型,不能是基本类型,下面的公式不能编译:
int integer = 0;
// Error will be reported at compile time
boolean isInstance = integer instanceof Number
另外,编译器会检查instanceof表达式 obj 中是否可以转换为右边的Class类型,如果不能转换直接报错,如果不能确定类型,也会编译。
// Class.isInstance Equivalent to instanceof The operator
boolean ret = entity instanceof UserInfo;
boolean isInstance = UserInfo.class.isInstance(entity);
如上图Class.isInstance 等价于instanceof 运算符。如果参数不是null, 并且不触发也可以,ClassCastException如果成功转换为左边的引用类型,就会返回true。
该方法的调用者和参数是Class对象,调用者是父类,参数是自身或其子类。
boolean assignableFrom = List.class.isAssignableFrom(ArrayList.class);
常用于判断父子关系,Mybatis 插件教程中使用这个方法来判断一个类是否是接口的实现类。
该方法主要用于判断Class是否为原始类型(boolean、char、byte、short、int、long、float、double)。
//true
boolean primitive = int.class.isPrimitive();
请注意,基类型的包装器类型。如果使用此方法确定结果,则返回 false。
这类判断除前两种外都很常见,后两种机会有限。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习