0

我正在尝试获取导致包中的注释的对象Class引用(Apache Bval 实现)。ConstraintViolationjavax.validation

在得到一些 ConstraintViolations 后,我将它们传递给以下函数:

private Class<?> getConstraintAnnotation(final ConstraintViolation<?> constraintViolation) {
    return constraintViolation
        .getConstraintDescriptor()
        .getAnnotation()
        .getClass();
  }

这将返回一个类对象,其getName()getCanonicalName()getTypeName()都返回“java.lang.reflect.Proxy”。

奇怪的是,对象的toString()方法Class返回“class com.sun.proxy.$Proxy10”。

有没有办法让我获得真正的注释类而不是这些代理?理想情况下,我希望将内置注释映射到错误代码(每次使用时都不必覆盖该消息)。

4

1 回答 1

2

Java 注解由Proxy. Proxy确实是真正的注释。您应该使用Annotation.annotationType而不是Object.getClass获取真正的注释类。

于 2018-07-24T03:03:29.873 回答