chi*_*der 63 java polymorphism
有没有一种简单的方法来验证对象属于给定的类?例如,我能做到
if(a.getClass() = (new MyClass()).getClass())
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
但这需要每次动态实例化一个新对象,只是丢弃它.有没有更好的方法来检查"a"属于"MyClass"类?
小智 157
instanceof
其他答案所描述的关键字通常是您想要的.请记住,这instanceof
也将返回true
超类.
如果要查看对象是否是类的直接实例,可以比较该类.您可以通过获取实例的类对象getClass()
.并且您可以通过静态访问特定类ClassName.class
.
例如:
if (a.getClass() == X.class) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,如果a
是实例,则条件为真X
,但不是if a
的子类的实例X
.
相比下:
if (a instanceof X) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
在该instanceof
示例中,如果a
是实例X
,或者if a
是子类的实例,则条件为真X
.
大多数时候,instanceof
是对的.
gde*_*ohn 21
如果您需要动态执行此操作,可以使用以下方法,
if (clazz.isInstance(a)) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
在哪里clazz
是一个实例Class
.
Jac*_*kin 16
使用instanceof
运营商:
if(a instanceof MyClass)
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
我同意使用instanceof
已经提到的。
using 的另一个好处instanceof
是,当与of的null
引用一起使用时instanceof
将返回false
,而a.getClass()
将抛出一个NullPointerException
。
归档时间: |
|
查看次数: |
128955 次 |
最近记录: |