java - 确定字段是否使用给定的注释进行注释

标签 java hibernate-validator

我不知道你是否设法从标题中弄清楚我想做什么,所以我会尝试用例子来解释

假设我创建了自己的注解@VerifySomething

我已经为该注解创建了测试类以确保它有效。

现在假设我有类 SomeClass,其字段 something 带有注解 @VerifySomething

class SomeClass {
    @VerifySomething
    String something;
}

到目前为止一切顺利,但现在我想为我的 SomeClass 创建 test class 但是我认为验证某物的所有测试用例没有任何意义我已经检查过 @VerifySomething 在测试该注释的类中是否正常工作,但是我需要确保该字段实际上具有 @VerifySomething 注释而不复制粘贴所有内容这些测试用例。

所以我的问题是,有没有一种方法可以检查某个字段是否有一个或多个必需的注释,而无需编写我已经在注释测试类中编写的测试用例,以确保它按预期工作。

最佳答案

可以使用getAnnotation判断字段上是否有特定的Annotation,以注解类为参数:

field.getAnnotation( SomeAnnotation.class );

这里有一个方法可以用来验证一个类是否有一个由给定注释注释的字段:

import java.lang.reflect.Field;
import javax.validation.constraints.NotNull;
import org.junit.Test;
import org.springframework.util.Assert;

public class TestHasAnnotatedField {
    @Test
    public void testHasFieldsWithAnnotation() throws SecurityException, NoSuchFieldException {
        Class<?>[] classesToVerify = new Class[] {MyClass1.class, MyClass2.class};
        for (Class<?> clazz : classesToVerify) {
            Field field = clazz.getDeclaredField("something");
            Assert.notNull(field.getAnnotation(NotNull.class));
        }
    }
    static class MyClass1 { @NotNull String something; }
    static class MyClass2 { @NotNull String something; }
}

关于java - 确定字段是否使用给定的注释进行注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15210588/

相关文章:

java - 如何检索我域中的所有用户

java - C3P0Registry mbean 未向 MBeanServer 注册。获取 InstanceNotFoundException

java 类对象和类型

spring - 如何验证动态生成的字段服务器端

java - Hibernate Validator中的ClassValidator在哪里?

java - 带有 hibernate 验证的 Spring MVC 不起作用

java - 方法可以在不声明的情况下抛出 java.lang.Exception 吗?

java - 使用不同端口 Ping

java - 如何检查@RequestMapping参数中的请求参数不是空字符串?

java - Spring 休息: How to validate Date passed in request body