检查派生类是否具有超类的注释

Ger*_*ort 1 java oop inheritance annotations

我需要检查,形成超类,如果派生类有一个特定的注释:

public class SuperClass
{
  public boolean hasAnnotation()
  {
    //super_class_method_code
  }
}

@annotationToCheck
public class DerivedClass extends SuperClass
{
   //derived_class_code
}
Run Code Online (Sandbox Code Playgroud)

有可能在Java?我知道如何在C#中做,但在Java中我找不到任何解决方案...... :(

谢谢!!!

Hie*_*mus 7

如果您的实例实际上是子类类型,那么就像在超类中定义方法以实现以下实现一样简单:

this.getClass().isAnnotationPresent(annotationToCheck.class);
Run Code Online (Sandbox Code Playgroud)

由于它this是DerivedClass的一个实例,getClass返回DerivedClass并且检查有效.

注意2:正如@Pshemo在注释中提到的那样,这仅在注释注释时有效@Retention(RetentionPolicy.RUNTIME).

  • +1我将补充说,这适用于带有`@Retention(RetentionPolicy.RUNTIME)`策略的注释. (2认同)