use*_*016 6 java class instanceof
什么意思'动态等价'?
我只是想知道this.getClass().isInstance(aClass)取代的目的是this instanceof aClass什么?有区别吗?
确定指定的Object是否与此Class表示的对象分配兼容.此方法是Java语言instanceof运算符的动态等效项
Pet*_*rey 11
是.不仅顺序不一样,而且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
Run Code Online (Sandbox Code Playgroud)
为了看到差异,我建议你尝试使用它们.
注意:如果你这样做,object.getClass().getClass()或者myClass.getClass()你会得到一个Class小心不要getClass()在你不需要的时候打电话.
该instanceof运算符测试对象是否是固定(静态)类的实例;即一个在编译时名称已知的类。
该Class.isInstance方法允许您针对动态类进行测试;即仅在运行时才知道的类。
我只是想知道有什么目的
this.getClass().isInstance(aClass)而不是this instanceof aClass?有区别吗?
其目的isInstance如上。
这两个表达式之间的主要区别是:
第一个aClass是一个值为对象的变量Class,并且
第二个aClass是类的名称:它不能是变量。
| 归档时间: |
|
| 查看次数: |
1464 次 |
| 最近记录: |