“动态等效”是什么意思?
我只是想知道拥有this.getClass().isInstance(aClass)而不是的目的是this instanceof aClass什么?有区别吗?
确定指定的 Object 是否与该 Class 表示的对象赋值兼容。此方法是 Java 语言 instanceof 运算符的动态等效方法
“动态等效”是什么意思?
我只是想知道拥有this.getClass().isInstance(aClass)而不是的目的是this instanceof aClass什么?有区别吗?
确定指定的 Object 是否与该 Class 表示的对象赋值兼容。此方法是 Java 语言 instanceof 运算符的动态等效方法
是的。不仅顺序不一样,而且object instanceof Clazz必须有一个在编译时已知的类。 clazz.isInstance(object)可以采用在运行时已知的类。
还有一个细微的区别是 isInstance 会自动装箱,但 instanceof 不会。
例如
10 instanceof Integer // does not compile
Integer.class.isInstance(10) // returns true
Integer i = 10;
if (i instanceof String) // does NOT compile
if (String.class.isInstance(i)) // is false
要查看差异,我建议您尝试使用它们。
注意:如果你这样做,object.getClass().getClass()否则myClass.getClass()你只会得到一个Class小心不要getClass()在不需要的时候打电话。
instanceof运算符测试对象是否是固定(静态)类的实例;即名称在编译时已知的类。
该Class.isInstance方法允许您针对动态类进行测试;即仅在运行时才知道的类。
我只是想知道拥有
this.getClass().isInstance(aClass)而不是的目的是this instanceof aClass什么?有区别吗?
的目的isInstance如上。
这两个表达式之间的主要区别是:
在第一个中,aClass是一个变量,其值是一个Class对象,并且
在第二个中,aClass是一个类的名称:它不能是一个变量。