gpt4 book ai didi

java - 获取注释值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:41:34 25 4
gpt4 key购买 nike

如何在注释中设置值?

我定义了以下注解:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface JsonElement {
int type();
}

这是在 POJO 类中使用它的方法

@JsonElement(type=GETTER_METHOD)
public String getUsername{
........................
}

以及使用反射来检查此方法是否存在 JSonElement 注释并检查类型值是什么的 util 类。

Method methods[] = classObject.getClass().getDeclaredMethods();

JSONObject jsonObject = new JSONObject();
try {
for (int i = 0; i < methods.length; i++) {
String key = methods[i].getName();
System.out.println(key);
if (methods[i].isAnnotationPresent(JsonElement.class) && key.startsWith(GET_CHAR_SEQUENCE)) {
methods[i].getDeclaredAnnotations();
key = key.replaceFirst(GET_CHAR_SEQUENCE, "");
jsonObject.put(key, methods[i].invoke(classObject));
}

}
return jsonObject;
} catch (Exception e) {
e.printStackTrace();
return null;
}

我如何找出 type() 值是什么?我可以找到注释是否存在,但我找不到一种方法来找出为 type() 设置了什么值(如果有的话)。

最佳答案

JsonElement jsonElem = methods[i].getAnnotation(JsonElement.class);
int itsTypeIs = jsonElem.type();

请注意,您必须确保 jsonElem 不是 null

isAnnotationPresent(JsonElement.class)

或者一个简单的

if (jsonElem != null) {
}

检查。


此外,如果您将注释更改为

public @interface JsonElement {
int type() default -1;
}

您不必在代码中每次出现 @JsonElement 时都声明 type 属性 - 它会默认为 -1 .

您也可以考虑为此使用 enum 而不是一些整数标志,例如:

public enum JsonType {
GETTER, SETTER, OTHER;
}

public @interface JsonElement {
JsonType type() default JsonType.OTHER;
}

关于java - 获取注释值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10682935/

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