gpt4 book ai didi

java - 如何检查类的注释是否属于特定类别?

转载 作者:搜寻专家 更新时间:2023-11-01 03:18:45 26 4
gpt4 key购买 nike

我有如下注释的类:

@BaseProp(category = Property.CATEGORY1)
where Property is a class defined as
public enum Property{
CATEGORY1("category1"), CATTEGORY2("category2");

public static Property getCategory(String value) {
return Property
.valueOf(Optional.ofNullable(value).orElseThrow(IllegalArgumentException::new).toUpperCase());
}

它有适当的 getter、setter、构造函数和此方法 getCategory()

我在多个包中的其他类都注释为

@Prop(category = Property.CATGORY1)

这些类扩展了一个基类。

我想为类创建两个 ArrayList 对象 -1. 扩展 BaseClass 并且类别被注释为 CATEGORY12.扩展BaseClass并且类别被注释为CATEGORY2

从某种意义上说,我想识别类并为它们创建对象,并将它们放在 Objectx 的通用 ArrayList 中。

我如何使用反射和 Java 来做到这一点?

最佳答案

对于任何类(例如 Class X extends BaseClass),使用如下内容:

Class<?> c = X.class;  // or if you have X x, then x.getClass();
for (Annotation ann : c.getAnnotations()) {
if (ann instanceof BaseProp) { // make sure it's your annotation
BaseProp bp = (BaseProp)ann;
bp.category(); // do something here
}
}

您需要将您的决策逻辑放在“//do something here”行中,方法是检查那里的实际属性值,然后适本地将类分配给列表。

关于java - 如何检查类的注释是否属于特定类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38309462/

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