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
)
# 1 楼答案
好吧,我想我应该在发帖之前做更多的研究。我发现我可以使用^{} :
这似乎很管用。不过,我不确定使用这种方法是否有任何警告
# 2 楼答案
因为注释只是一个类,所以可以简单地使用==比较:
# 3 楼答案
你只是在找
?
# 4 楼答案
为了完整起见,另一种可能性是
# 5 楼答案
或者更简单: