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相关问答推荐

升级到 3.0.0 后应用程序无法构建

JavaFX 无法在我的 macbook(m1 芯片组)上运行

Spring MVC 控制器测试 PUT

使用 UNICODE_CHARACTER_CLASS 标志时的不同 Java 正则表达式匹配行为

Springboot的@Controller和@RestController注解什么时候使用,底层概念是什么?

使用状态模式了解对象的状态

RandomGenerator (L32X64MixRandom) 的默认算法每次生成相同的数字

JVM字节码中的“dup2_x2”指令有什么用?

如何将 MySQL 查询结果放入 java 中的 List

如何为 JDK 17 编写 Github 工作流

Java中的动态链接比较器

java使用函数作为参数,只关心它的返回值

如何在Java中合并包含相同值的多个数组

迭代可迭代对象直到满足条件或可迭代对象已在 Java 中完全迭代的最佳实践

如何遵循鲍勃叔叔的规则(建议)在一种方法中正确使用一个 try-catch 块?

FileInputStream 真的没有缓冲吗?

没有@Target 的注解类型可以在任何地方使用吗?

Ehcache 2 Maven依赖

关闭应用程序时单击通知按钮打开活动

如何在 Spring-Data-JDBC 中设置 fetch-size