Java注释会抛出NullPointerException.

adh*_*dhg 1 java annotations

不知道我在这里做错了什么.我的目标是获取方法的注释(如果存在).

public class RunTest
{
public static void main(String[] args) throws Exception, NoSuchMethodException
{
    MyAction action = new MyAction(); 

    Method method = action.getClass().getDeclaredMethod("printSomething");

    RequiredPermission permission = method.getAnnotation(RequiredPermission.class);
    String value = permission.permissionName();

    System.out.println("permission name: "+value);

}
}
Run Code Online (Sandbox Code Playgroud)

MyAction类

public class MyAction
{
@RequiredPermission(permissionName="SYSO", permissionValue = 0)
public void printSomething()
{
    System.out.println("hi there");
}

public void printABC()
{
    System.out.println("ABC...");
}
}
Run Code Online (Sandbox Code Playgroud)

和注释:

public @interface RequiredPermission
{
    String permissionName();
    int permissionValue();
}
Run Code Online (Sandbox Code Playgroud)

我希望在控制台上看到:

权限名称:SYSO

但相反,我得到:

com.annotation.RunTest.main(RunTest.java:14)中线程"main"java.lang.NullPointerException中的异常

Kev*_*sox 5

注释必须将其保留策略设置为RUNTIME通过反射访问它.

将以下内容添加到注释中:

@Retention(RetentionPolicy.RUNTIME)
public @interface RequiredPermission
{
    String permissionName();
    int permissionValue();
}
Run Code Online (Sandbox Code Playgroud)