为什么我在这里得到一个空的注释数组

Osc*_*Ryz 4 java reflection annotations

根据文档和这个答案,我应该在以下代码中使用"覆盖"(或类似的东西):

import java.lang.reflect.*;
import java.util.*;
import static java.lang.System.out;
class Test { 
  @Override
  public String toString() { 
    return "";
  }
  public static void main( String ... args ) { 
    for( Method m : Test.class.getDeclaredMethods() ) { 
      out.println( m.getName() + " " + Arrays.toString( m.getDeclaredAnnotations()));
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,我得到一个空数组.

$ java Test
main []
toString []
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

ska*_*man 6

因为@Override注释具有Retention=SOURCE,即它没有编译到类文件中,因此在运行时不能通过反射获得.它仅在编译期间有用.