clazz代表Classobj代表Object.

clazz.isAssignableFrom(obj.getClass())

总是一样的

clazz.isInstance(obj)

?

如果没有,区别是什么?

推荐答案

clazz对象表示的类是Foo的超类或超接口时,clazz.isAssignableFrom(Foo.class)将为真.

当对象obj是类clazz的实例时,clazz.isInstance(obj)将为真.

也就是说:

clazz.isAssignableFrom(obj.getClass()) == clazz.isInstance(obj)

只要clazzobj不为空,则始终为真.

Java相关问答推荐

为什么接口中的主函数而不是类中的主函数在Java 17中编译和运行没有问题?

如何在Docker容器中使用wireock—Webhooks阻止请求?

如何将kotlin代码转换为java

如何使用AWS CLI从S3存储桶中的所有对象中删除用户定义的元数据?

嵌入式ActiveMQ Artemis Web控制台加载错误

这是什么Java构造`(InputStream Is)->;()->;{}`

如何在Application.yaml中连接字符串?

使用PDFBox从PDF中删除图像

如何为JavaFX Spring Boot应用程序制作Windows/MacOS/Linux安装程序

如何在Java springboot中从一个端点发送多个时间响应?

无法将GSON导入到我的JavaFX Maven项目

如何生成指定范围内的11位序列号?

深度优先搜索实现:算法只向右搜索

在不使用instanceof或强制转换的情况下从父类变量调用子类方法

在打开搜索结果时,如何让Eclipse打开整个文件?

java构造函数中的冻结操作何时发生?

什么是;u〃;平均值;jdku;在java开发工具包中?

OpenAPI Maven插件生成错误的Java接口名称

Java-Apache BufferedHttpEntity 在发送请求时加载整个文件

与配置类中的自动装配字段相反是什么意思?