一尘不染

检查注释是否为特定类型

java

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

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

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

我想要做:

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

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


阅读 224

收藏
2020-12-03

共1个答案

一尘不染

你只是在寻找

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

2020-12-03