何时使用Class.isInstance()以及何时使用instanceof操作员?
Java提供了两个用于检查赋值兼容性的选项.哪个用的?
use*_*300 71
因为instanceof你需要在编译时知道确切的类.
if (foo instanceof ThisClassIKnowRightNow)
...
Run Code Online (Sandbox Code Playgroud)
因为isInstance课程是在运行时决定的.(后期绑定)例如
if (someObject.getClass().isInstance(foo))
...
Run Code Online (Sandbox Code Playgroud)
aro*_*oth 52
我认为官方文档为您提供了这个答案(尽管是以一种非常特殊的方式):
此方法是Java语言instanceof运算符的动态等效项.
我认为这isInstance()主要是为了在运行时处理类型反射的代码中使用.特别是,我会说它存在处理你可能事先不知道要提前检查成员资格的类的类型的情况(尽管这些情况可能很少见).
例如,您可以使用它来编写一个方法来检查两个任意类型的对象是否与赋值兼容,如:
public boolean areObjectsAssignable(Object left, Object right) {
return left.getClass().isInstance(right);
}
Run Code Online (Sandbox Code Playgroud)
一般来说,我会说,instanceof只要你知道要提前检查的课程类型,就应该首选使用.在那些非常罕见的情况下,请不要使用isInstance().
| 归档时间: |
|
| 查看次数: |
47309 次 |
| 最近记录: |