如何以编程方式确定Java源代码中是否存在@Override
注释?我尝试使用方法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
答案 0 :(得分:4)
无法访问the docs for @Override,您不能。 retention policy是SOURCE
,而不是RUNTIME
,这意味着注释在运行时不存在。