获取包含@NotNull 注释的字段名称

时间:2021-02-22 13:45:20

标签: java collections annotations java-stream

我想获取包含@NotNull 的字段名称作为实体定义中的注释。

@Entity
public class student{
 @NotNull
 private Integer sid;
 @NotNull
 private String sname;
 private Integer age;
}

我创建了以下函数

public boolean hasNotNull() {
            return Arrays.stream(this.getClass().getDeclaredFields())
                    .anyMatch(field -> field.isAnnotationPresent(NotNull.class));
        }

public List<String> getValue() {

        if (hasNotNull()) {
            Stream<Field> filter = Arrays.stream(this.getClass().getDeclaredFields())
                    .filter(field -> field.isAnnotationPresent(NotNull.class));
            filter.forEach(obj -> obj.getName()).collect(Collectors.toList());      }

        else
            return null;
    }

错误说

<块引用>

无法在原始类型 void 上调用 collect(Collectors.toList())

我也是 Java 8 概念和流的新手。 请推荐

1 个答案:

答案 0 :(得分:0)

filter.map(obj -> obj.getName()).collect(Collectors.toList());      }

这将完成所需的事情