gpt4 book ai didi

java - 从 Java 中的注解中获取默认元素值

转载 作者:IT老高 更新时间:2023-10-28 21:01:04 26 4
gpt4 key购买 nike

我创建了自己的注释,我通过反射利用它在我的代码中做出决定。注释为其唯一元素设置了默认值。有没有办法通过反射访问默认值?

PageableRequestMapping.java(注解)

package org.tothought.controllers.annotations;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
public @interface PageableRequestMapping {
String variablePath() default "/";
}

获取默认值的伪代码

private int parsePageNumber(StringBuffer requestURL,
PageableRequestMapping pageableRequestMapping) {

String variablePath = pageableRequestMapping.variablePath();

//Psuedo code doesn't work in Java, included to illustrate intentions
if(variablePath.equalsIgnoreCase(pageableRequestMapping.variablePath().default())){
//handle default case
}else{
//handle different case
}
return 0;
}

我对这个问题的研究没有发现任何例子。我推测这个值可以通过类以静态方式访问,但它不能。所以我有两个问题。

  • 是否可以在注解中获取元素的默认值?
  • 如果是这样,怎么做?

另外,我知道我可以对这个值进行硬编码,但是我想让程序更健壮一些。

最佳答案

你可以使用反射得到Method对象,然后使用Method#getDefaultValue() .

Method method = pageableReqMapping.annotationType().getMethod("variablePath");
String variablePath = (String) method.getDefaultValue();

这是一个具体的例子:

public class AnnotationTest {

public static void main(String[] args) throws Exception {
Class<?> clazz = Annotation.class;
Method method = clazz.getDeclaredMethod("value");
String value = (String) method.getDefaultValue();
System.out.println(value);
}

public @interface Annotation {
String value() default "default value";
}
}

关于java - 从 Java 中的注解中获取默认元素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13324297/

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