gpt4 book ai didi

java - 使用用户定义的注释时获取 java.lang.NullPointerException

转载 作者:行者123 更新时间:2023-11-29 03:10:19 24 4
gpt4 key购买 nike

我在执行以下方法时遇到空指针异常。我已经调试并发现 cons.getAnnotation(MyAssessment.class); 正在返回 null。请帮忙

import java.lang.annotation.*; 
import java.lang.reflect.*;

enum GradeLevel { POOR, AVERAGE, GOOD, VERYGOOD, EXTRAORDINARY }

@interface MyAssessment {
GradeLevel score();
}

public class Problem {

@MyAssessment(score=GradeLevel.GOOD)
public Problem(){
System.out.println("This is a constuructor");
}

public static void main(String... args){

try {
Class c = new Problem().getClass();
Constructor cons = c.getDeclaredConstructor();
MyAssessment an = (MyAssessment) cons.getAnnotation(MyAssessment.class);
System.out.println("YOUR SCORE IS : " + an.score());
}
catch(NoSuchMethodException nsme) {
System.out.println("Constructor thrown exception");
}
}
}

最佳答案

默认情况下,注释在运行时不可用。你需要注释你的注解:P

@Retention(RetentionPolicy.RUNTIME)
@interface MyAssessment {

您还可以添加一个 @Target 的 say CONSTRUCTOR 来说明它应该只出现在构造函数上。

关于java - 使用用户定义的注释时获取 java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29728156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com