不知道我在这里做错了什么.我的目标是获取方法的注释(如果存在).
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中的异常
注释必须将其保留策略设置为RUNTIME通过反射访问它.
将以下内容添加到注释中:
@Retention(RetentionPolicy.RUNTIME)
public @interface RequiredPermission
{
String permissionName();
int permissionValue();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
977 次 |
| 最近记录: |