检查批注是否属于特定类型

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

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

这让我觉得有点笨拙,因为它依赖于一个完全限定的类名字符串。如果命名空间将来发生更改,则可能会导致细微的错误。

我想做:

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

但是是一个抽象类,无法实例化。有没有办法模拟(或基本上使用)针对接口或抽象类?javax.validation.ValidinstanceofisInstance


答案 1

你只是在寻找

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

?


答案 2

或者更简单:

if (annotation instanceof Valid) { /* ... */ }