获取包含@Size 注释的字段名称及其最大长度

时间:2021-02-23 05:01:39

标签: java java-8 annotations java-stream

我有这个实体 -

#PREVENT SECOND EVALUATION
RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule .* - [L,QSA]

我想获取字段的名称及其允许的最大长度。 也就是说,对于上述情况,输出应该像

@Entity
public class Employee{
@Id
@NotNull
@Size(max=5)
private Integer employeeId;

@NotNull
@Size(max=40)
private String employeeName;

private Long employeeSalary;
}

我创建了以下内容,它返回包含@Size 的字段的名称

employeeId - 5
employeeName - 40

建议我如何获得字段的最大长度。

1 个答案:

答案 0 :(得分:1)

   Map<String, Integer> map = Stream.of(e.getClass().getDeclaredFields())
       .filter(f -> f.isAnnotationPresent(Size.class))
       .collect(Collectors.toMap(
           f -> f.getName(), 
           f -> f.getAnnotation(Size.class).max()));