当前位置: 首页 > 面试题库 >

检查注释是否为特定类型

倪举
2023-03-14
问题内容

我正在使用反射来查看附加到类的属性的注释是否具有特定类型。目前我正在做:

if("javax.validation.Valid".equals(annotation.annotationType().getName())) {
   ...
}

这让我有些不高兴,因为它依赖于完全合格的类名称的字符串。如果将来更改命名空间,则可能会导致细微的错误。

我想要做:

if(Class.forName(annotation.annotationType().getName()).isInstance(
     new javax.validation.Valid()
)) {
   ...
}

但是javax.validation.Valid是抽象类,无法实例化。有没有一种方法可以针对接口或抽象类进行模拟instanceof(或基本上使用isInstance)?


问题答案:

你只是在寻找

if (annotation.annotationType().equals(javax.validation.Valid.class)){}



 类似资料:
  • 我有如下注释的类: 从这个意义上说,我希望标识类并为它们创建对象,并将它们放在的一般中。 我如何使用反射和Java来做到这一点?

  • 我有一个注释和三个类,像这样: 有没有办法确定当前注释是直接在类中继承还是声明的? 类似于方法<代码>公共布尔值的东西是默认的(类 导出输出:

  • 我正在使用Java注释处理器。我的注释用于标记可以在运行时读取到文件或从文件中读取的字段变量。但是,我想检查变量类型是否在编译时实现了,以便如果该字段不可序列化,我可以在编译时给出警告/错误。 (我不需要实际检查对象是否是可序列化的,如果它实现了接口,我会信任它)。 我已经知道如何做其他事情,但我不知道如何检查元素是否实现了。我可以使用方法,但我不知道如何检查返回的这些中的任何一个是否是的。 此外

  • 例如,有没有办法测试给定的Groovy类是否有@Slf4j注释? 这是在TDD上下文中:在看到失败的测试之前,我不想添加注释。

  • 是否有可能创建一个typeGuard,或者其他实现相同目的的东西,来检查一个变量是否是打字稿联合中的特定接口类型?

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