gpt4 book ai didi

Java自定义注释默认值等于类字段名称

转载 作者:行者123 更新时间:2023-12-02 01:36:29 24 4
gpt4 key购买 nike

我有以下自定义注释:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface CustomAnnotation {
public String value() default "";
}

以及以下类:

public class CustomClass {
@CustomAnnotation
private String name;
}

是否可以将 CustomAnnotation 的默认 value() 设置为等于指定类中的字段变量名称,而不是像本示例中那样硬编码为空字符串 - 也就是说,在应用于某个字段时动态调整在类中,除非另有明确指定?例如。在本例中,它将是 CustomClass 中的“名称”。

最佳答案

处理标注时可以获取字段名。可以通过两种方式处理注释:使用反射或注释处理器。

这是一个如何使用反射进行处理的示例:

List<String> names = Arrays.stream(myClassWithAnnotatedFields.getClass().getDeclaredFields())
.filter(field -> field.isAnnotationPresent(CustomAnnotation.class))
.map(Field::getName)
.collect(Collectors.toList())

这里是如何使用注释处理器进行处理的示例:

import javax.annotation.processing.Processor;
import javax.annotation.processing.AbstractProcessor;

@com.google.auto.service.AutoService(Processor.class)
public class MyProcessor extends AbstractProcessor {
@Override
public boolean process(Set<? extends TypeElement> set, RoundEnvironment roundEnvironment) {
List<Name> names = roundEnvironment.getElementsAnnotatedWith(CustomAnnotation.class)
.stream()
.map(Element::getSimpleName)
.collect(Collectors.toList());
}
}

关于Java自定义注释默认值等于类字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55181913/

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