msr*_*msr 22 java equals subclass instanceof
我重写了equals()方法,我需要知道对象是否是Event的子类的实例(Event是超类).我想要像"obj subclassof Event"这样的东西.怎么做到这一点?
提前致谢!
Ken*_*oom 44
instanceof 可以处理就好了.
Adr*_*ian 32
使用以下代码,您可以检查对象是否是扩展Event但不是Event类实例本身的类.
if(myObject instanceof Event && myObject.getClass() != Event.class) {
// then I'm an instance of a subclass of Event, but not Event itself
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,instanceof检查对象是否为指定的类,或者在任何级别的Event上检查子类(扩展或实现).
Kev*_*ock 10
真的instanceof应该足够好但是如果你想确定这个类真的是一个子类,那么你可以这样提供检查:
if (object instanceof Event && object.getClass() != Event.class) {
// is a sub-class only
}
Run Code Online (Sandbox Code Playgroud)
由于阿德里安有点领先于我,我还将添加一种方法,你可以用通用方法做到这一点.
public static boolean isSubClassOnly(Class clazz, Object o) {
return o != null && clazz.isAssignableFrom(o) && o.getClass() != clazz;
}
Run Code Online (Sandbox Code Playgroud)
使用此:
if (isSubClassOnly(Event.class, object)) {
// Sub-class only
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26684 次 |
| 最近记录: |