Java 从方法类获取注释字段

Java 从方法类获取注释字段,java,android,Java,Android,我试图从AndroidSDK19和JDK1.7中的方法类中获取annotations字段。但是下面的代码抛出NoSuchFieldException。但是我可以在Method.java文件中找到确切的字段 Field field = Method.class.getDeclaredField("annotations"); 您无法读取该字段,因为它是私有的,为了绕过它,您必须首先使其可访问: Field f = Method.class.getDeclaredField("annota

我试图从AndroidSDK19和JDK1.7中的方法类中获取annotations字段。但是下面的代码抛出NoSuchFieldException。但是我可以在Method.java文件中找到确切的字段

Field field = Method.class.getDeclaredField("annotations");

您无法读取该字段,因为它是私有的,为了绕过它,您必须首先使其可访问:

    Field f = Method.class.getDeclaredField("annotations"); 
    f.setAccessible(true);
    System.out.println("f = " + f);

如果看到Method.java文件,则注释是byte[]类型的字段。我不明白为什么我拿不到它。确切地说,我正在尝试一种破解,尝试获取这个字段并在运行时更新方法的注释。Method.class.getAnnotations将只让您知道注释列表,而不会更新它们。@1987frank my bad-我以为您正在尝试获取该类的注释。你不能得到这个领域,因为它是私人的。但你可以绕开它-见更新的答案。我认为这与你提到的问题无关。在行字段f=Method.class.getDeclaredFieldannotations;处引发异常@1987frank我用Java7和Java8运行了它,并且都打印了:f=private byte[]java.lang.reflect.Method.annotations。如果您指的是java.lang.reflect.Method,我认为您不应该在Android环境中看到不同的输出。试着用调试器运行,看看它为什么失败,我也很好奇!