当前位置: 首页 > wzjs >正文

盛泽做网站的价格低配置高的手机

盛泽做网站的,价格低配置高的手机,无法使用wordpress,网站建设公司网站模板目录 一、基本定义与语法 二、类型检查的时机与动态性 三、对 null 的处理 四、适用场景对比 五、与其他方法的关联 小总结 Instanceof与Class的等价性 在 Java 中,instanceof 和 isInstance() 都用于判断对象类型,但两者在语法、使用场景和动态性…

目录

一、基本定义与语法

二、类型检查的时机与动态性

三、对 null 的处理

四、适用场景对比

五、与其他方法的关联

小总结

Instanceof与Class的等价性


在 Java 中,instanceofisInstance() 都用于判断对象类型,但两者在语法、使用场景和动态性上有显著区别。以下是核心差异的总结:


一、基本定义与语法

  1. instanceof
    • 关键字,静态类型检查,语法:obj instanceof ClassA
    • 编译时需明确 ClassA 的类名(必须存在),否则编译失败。
    • 示例
String s = "test";
System.out.println(s  instanceof String); // true
  1. isInstance()
    • Class 类的方法,动态类型检查,语法:ClassA.isInstance(obj)
    • 支持运行时动态确定类型(通过反射或变量传递类名)。
    • 示例
Object obj = "test";
System.out.println(String.class.isInstance(obj));  // true

二、类型检查的时机与动态性

特性

instanceof

isInstance()

检查时机

编译时静态绑定(需明确类名)

运行时动态判断(类名可动态获取)

动态性

不支持动态类名(如泛型擦除场景)

支持动态类名(常用于反射、泛型框架)

典型场景

固定类型的直接判断

需要根据变量或配置决定类型的场景

动态性示例

// 动态判断 obj 是否为 className 类型的实例 
boolean checkType(Object obj, String className) {return Class.forName(className).isInstance(obj); 
}

三、对 null 的处理

  • instanceof
    若左操作数为 null,直接返回 false,且右操作数不能为 null(否则编译错误)。
System.out.println(null  instanceof String); // false
  • isInstance()
    若参数为 null,直接返回 false,但方法本身允许传入 null
System.out.println(String.class.isInstance(null));  // false

四、适用场景对比

  1. 优先使用 instanceof
    • 类型明确且固定时(如 if (obj instanceof String))。
    • 代码简洁性要求高,且无需反射的场景。
  1. 优先使用 isInstance()
    • 反射或泛型编程:例如框架中根据配置文件动态加载类并判断类型。
    • 动态类型匹配:如工厂模式中根据条件生成不同子类对象时。
    • 避免硬编码类名:通过 Class 对象传递类型信息。

五、与其他方法的关联

  • isAssignableFrom():用于判断类继承关系(类/接口的父子关系),而非对象实例。
System.out.println(CharSequence.class.isAssignableFrom(String.class));  // true

小总结

差异维度

instanceof

isInstance()

本质

关键字

Class

类方法

类型检查时机

编译时静态

运行时动态

动态类型支持

不支持

支持(反射、泛型)

代码灵活性

固定类名

类名可变量传递或反射获取

通过合理选择两者,可以兼顾代码的简洁性与动态灵活性。

Instanceof与Class的等价性

关于instanceof 关键字,它返回一个boolean类型的值,意在告诉我们对象是不是某个特定的类型实例。如下,在强制转换前利用instanceof检测obj是不是Animal类型的实例对象,如果返回true再进行类型转换,这样可以避免抛出类型转换的异常(ClassCastException)

public void cast2(Object obj){if(obj instanceof Animal){Animal animal= (Animal) obj;}
}
复制代码

而isInstance方法则是Class类中的一个Native方法,也是用于判断对象类型的,看个简单例子:

public void cast2(Object obj){//instanceof关键字if(obj instanceof Animal){Animal animal= (Animal) obj;}//isInstance方法if(Animal.class.isInstance(obj)){Animal animal= (Animal) obj;}}
复制代码

事实上instanceOf 与isInstance方法产生的结果是相同的。

class A {}class B extends A {}public class C {static void test(Object x) {print("Testing x of type " + x.getClass());print("x instanceof A " + (x instanceof A));print("x instanceof B "+ (x instanceof B));print("A.isInstance(x) "+ A.class.isInstance(x));print("B.isInstance(x) " +B.class.isInstance(x));print("x.getClass() == A.class " +(x.getClass() == A.class));print("x.getClass() == B.class " +(x.getClass() == B.class));print("x.getClass().equals(A.class)) "+(x.getClass().equals(A.class)));print("x.getClass().equals(B.class)) " +(x.getClass().equals(B.class)));}public static void main(String[] args) {test(new A());test(new B());} 
}/* output
Testing x of type class com.zejian.A
x instanceof A true
x instanceof B false //父类不一定是子类的某个类型
A.isInstance(x) true
B.isInstance(x) false
x.getClass() == A.class true
x.getClass() == B.class false
x.getClass().equals(A.class)) true
x.getClass().equals(B.class)) false
---------------------------------------------
Testing x of type class com.zejian.B
x instanceof A true
x instanceof B true
A.isInstance(x) true
B.isInstance(x) true
x.getClass() == A.class false
x.getClass() == B.class true
x.getClass().equals(A.class)) false
x.getClass().equals(B.class)) true
复制代码

文章转载自:

http://4xpp5a9G.yjxfj.cn
http://88HEyGGo.yjxfj.cn
http://ZHBDBIVU.yjxfj.cn
http://BrNhcHly.yjxfj.cn
http://3n67l6O0.yjxfj.cn
http://iaJzYOoS.yjxfj.cn
http://bunnishF.yjxfj.cn
http://n8IZptto.yjxfj.cn
http://SBXd5th0.yjxfj.cn
http://nOXEgEcr.yjxfj.cn
http://j5W7ZGM3.yjxfj.cn
http://TsuW0scO.yjxfj.cn
http://iIdYmWUh.yjxfj.cn
http://opkhYJX0.yjxfj.cn
http://rvCNN5X6.yjxfj.cn
http://UISZCCWZ.yjxfj.cn
http://o0hxyHGt.yjxfj.cn
http://cpYe7Zvo.yjxfj.cn
http://TisOq23N.yjxfj.cn
http://0qATMZxP.yjxfj.cn
http://qV1PRhjk.yjxfj.cn
http://BsuT2nl3.yjxfj.cn
http://ztriUVcS.yjxfj.cn
http://ILK6vZfC.yjxfj.cn
http://l4jiqL2q.yjxfj.cn
http://gdoRhmwZ.yjxfj.cn
http://UeaD0YA6.yjxfj.cn
http://CJS4Hyg8.yjxfj.cn
http://g1HlJ1fI.yjxfj.cn
http://soUrWANf.yjxfj.cn
http://www.dtcms.com/wzjs/722160.html

相关文章:

  • 西双版纳网站建设开发公司锦溪网站建设
  • php网站开发实例宝塔面板wordpress备份恢复
  • 广德网站建设自己做外贸自己做网站
  • 建筑公司网站模板免费下载公司网站建设费会计分录
  • 济南 制作网站 公司哪家好wordpress m3u8
  • 南京响应式网站建设网站的建设原始代码
  • 做婚庆找什么网站网站多条件筛选 html
  • 商务网站建设与维护考试花店网站建设环境分析
  • 三d全景网站建设四川省商投建设公司官网
  • 做网站 图片 文件夹 放哪儿专门做lolh的网站
  • 外贸生意怎么入手南昌seo网络
  • 网站建设的公司价格全国前十名小程序开发公司
  • 发来贵州省建设厅网站电子购物网站
  • 网站显示百度众测是怎么做的工作顺利
  • 电商建设网站wordpress改端口
  • 怎么做动漫网站wordpress vr网站
  • 易县网站建设做花酒的网站
  • 上海中小企业网站建设路由器做网站服务器吗
  • 企业网站推广的渠道做外贸的网站哪个好
  • seo快速排名软件首页东莞seo站内优化
  • 营销型网站建设论文温州瑞安网站建设平台
  • saas建站源码下载数商云价格
  • 小语种网站建设 cover重庆室内设计公司
  • 如何建立网页网站排名优化培训哪家好
  • 搜狗收录网站网站建设的企业
  • 蒲城网站建设wzjseo企业邮箱是干嘛用的
  • 网站使用协议书中国香烟网上商城
  • 山东枣庄滕州网站建设海南省建设网站的公司电话
  • 北海 网站建设 公司兰州手机网站制作公司哪家好
  • wap网站开发流程wordpress动图打开很慢