当前位置: 首页 > 知识库问答 >
问题:

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

巫马松
2023-03-14

我有如下注释的类:

@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());
    }
@Prop(category = Property.CATGORY1)

从这个意义上说,我希望标识类并为它们创建对象,并将它们放在ObjectX的一般ArrayList中。

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

共有1个答案

燕砚文
2023-03-14

对于任何类(例如,X类扩展了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”行中,方法是检查那里的实际属性值,然后根据需要将类分配到列表中。

 类似资料:
  • 问题内容: 我正在使用反射来查看附加到类的属性的注释是否具有特定类型。目前我正在做: 这让我有些不高兴,因为它依赖于完全合格的类名称的字符串。如果将来更改命名空间,则可能会导致细微的错误。 我想要做: 但是是抽象类,无法实例化。有没有一种方法可以针对接口或抽象类进行模拟(或基本上使用)? 问题答案: 你只是在寻找 ?

  • 问题内容: 如何检查seleniumWeb元素是否包含特定的CSS类。 我有这个html li元素 如您所见,在class属性内部有一个活动类。 我的问题是我有这个元素,我想根据class属性是否具有其他“ active”值进行检查,这是比使用xpath更优雅的解决方案。 我怎样才能做到这一点? 问题答案: 鉴于您已经找到了您的元素,并且您想检查class属性内的某个类: 正如@aurelius正

  • 问题内容: 有没有一种简单的方法来验证对象属于给定的类?例如,我可以 但这需要每次在运行中实例化一个新对象,而只是将其丢弃。有没有更好的方法来检查“ a”是否属于类“ MyClass”? 问题答案: 如其他答案所述,关键字通常是您想要的。请记住,超类也会返回。 如果要查看对象是否是类的直接实例,则可以比较该类。您可以通过获取实例的类对象。您可以通过静态访问特定的类。 因此,例如: 在上面的例子中,

  • 我想基于当前类别及其父类别显示内容。为此,我需要知道当前类别是否是特定父类别的子类别。 例如,以下是我的类别: 汽车 跑车 意大利跑车 肮脏的 现在,我想在类别树下的每个类别存档中显示内容。例如,汽车、跑车和意大利跑车。 对于第一个类别,我可以使用WooCommerce的条件标记: 但是没有。所以我不能检查,如果分类“意大利跑车”是“汽车”的孩子。 有办法吗?

  • 问题内容: 我有一个不断变化的xml模式(使用trang自动生成)。这些更改不是很详尽。从此架构中仅添加或删除一些元素。通过这种模式,我正在生成Java类(使用cxf),通过它们我将解组xml文档。 随着模式的更改,我的自动生成的Java类也会更改。同样,与模式一样,java类中的更改不是很大。例如,如果将元素say 添加到架构;一些相关的功能说了,并添加到自动生成的java类中。 现在,如何确定

  • 问题内容: 原谅我,我来自ac#背景! 我在Go中有以下结构。我们通过从文件中读取配置来填充此结构,效果很好。但是我试图找出一种方法来告诉结构中的某个特定属性(通过配置文件传递时是否为null)。如图所示,完全没有设置。 我为此奋斗了大约3个小时。我可以针对类型字符串等执行此操作,但无法找到针对所有类型的通用方法? 问题答案: 在执行过程中,值的默认值为其零值。您可能要使所有类型的指针成为指针(例