我有一些被注释的类,如下所示:
@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)
这些类是基于一个基类的扩展。
我想要创建两个对象数组来存储不同类型的扩展了BaseClass并用CATEGORY1和CATEGORY2注释过的类的对象:
- 扩展了BaseClass且CATEGORY1注释过的类
- 扩展了BaseClass且CATEGORY2注释过的类
也就是说,我需要识别这些类并创建它们的对象,并将它们放入一个通用的Objectx数组中。
如何使用Java反射完成此操作?
Class
,检查注解及其类别是微不足道的。但首先,你必须找出如何找到所有基类的子类。然后,动态创建实例又是另一个话题。但找到子类是最难的部分。 - Holger