В Java, как можно программно определить, присутствует ли аннотация `@ Override` в исходном коде? - PullRequest
0 голосов
/ 07 мая 2019

Как программно определить, присутствует ли аннотация @Override в исходном коде Java?Я пытался использовать метод isAnnotationPresent.

public class A
  {
  int a = 1 ;
  @Override
  public String toString()
    { return "attribute a = " + a ; }
  }

public class B extends A
  {
  int b = 2 ;
  @Override
  public String toString ()
    { return super.toString() + ", " + "attribute b = " + b ; }
  }

import java.lang.reflect.Method ;
import java.lang.annotation.Annotation ;
public class Main
  {
  public static void main ( String [] args )
    {
    A a = new A() ;
    B b = new B() ;
    System.out.println ( a.toString() ) ;
    System.out.println ( b.toString() ) ;

    Class c = b.getClass() ;
    Method m = null ;
    try
      { m = c.getMethod("toString") ; }
    catch ( Exception e )
      { System.exit(0) ; }
    System.out.println ( "b's toString method is " + m ) ;    

    boolean bOverrides = m.isAnnotationPresent(Override.class) ;
    System.out.println ( "bOverrides = " + bOverrides ) ;
    }
  }

Конечно, аннотация @Override в исходном коде класса B может быть опущена, и я хотел бы знать, является ли эта аннотациядействительно, присутствует в исходном коде Java или отсутствует.Обратите внимание, что вывод main:

bOverrides = false

1 Ответ

4 голосов
/ 07 мая 2019

Согласиться с документами для @ Override , вы не можете. Политика хранения : SOURCE, а не RUNTIME, что означает, что аннотация отсутствует во время выполнения.

...