Java – 是否有像instanceof这样的“子类”?

我重写了equals()方法,我需要知道对象是否是Event的子类的实例(Event是超类)。 我想要像“obj subclassof Event”这样的东西。 怎么做到这一点?

提前致谢!

instanceof可以处理就好了。

使用以下代码,您可以检查对象是否是扩展Event但不是Event类实例本身的类。

 if(myObject instanceof Event && myObject.getClass() != Event.class) { // then I'm an instance of a subclass of Event, but not Event itself } 

默认情况下, instanceof检查对象是否为指定的类,或者是否为任何级别的Event的子类(扩展或实现)。

真的应该足够好但是如果你想确定这个类真的是一个子类,那么你可以这样提供检查:

 if (object instanceof Event && object.getClass() != Event.class) { // is a sub-class only } 

由于阿德里安有点领先于我,我还将添加一种方法,你可以用通用方法做到这一点。

 public static boolean isSubClassOnly(Class clazz, Object o) { return o != null && clazz.isAssignableFrom(o) && o.getClass() != clazz; } 

使用此:

 if (isSubClassOnly(Event.class, object)) { // Sub-class only } 

您可能希望查看someObject.getClass().isAssignableFrom(otherObject.getClass());

Java中没有直接的方法来检查子类。 instanceof Event将为任何子类对象返回true

您可以在对象上执行getClass() ,然后在Class对象上使用getSuperclass()方法来检查超类是否为Event

如果obj是Event的子类,那么它就是一个instanceof。 obj是它派生自的每个类/接口的实例。 所以至少所有对象都是Object的实例。