java - 计算代表已填充属性数量的 Java 对象的百分比

标签 java spring hibernate pojo

考虑一个 POJO 有 n 个属性。如何获取表示 POJO 的填充属性数(指定值/不为空)的百分比值?
POJO 是 MySql 数据库中的一个实体,我使用 Java、Hibernate 和 Spring。

最佳答案

嘿,你可以这样做:

public class CountReflection {

    public static void main(final String[] args) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {

        PoJo p = new PoJo();
        p.setA("a");

        Field[] fields = p.getClass().getDeclaredFields();

        int amountOfFields = 0;
        int amountOfFieldsNotNull = 0;

        for (Field field : fields) {
            amountOfFields++;
            Field declaredField = p.getClass().getDeclaredField(field.getName());
            declaredField.setAccessible(true);
            Object value = declaredField.get(p);
            if (value != null) {
                amountOfFieldsNotNull++;
            }
        }
        System.out.println("amountOfFields " + amountOfFields);
        System.out.println("amountOfFieldsNotNull " + amountOfFieldsNotNull);
        float percent = (amountOfFieldsNotNull * 100.0f) / amountOfFields;
        System.out.println("percent of not null " + percent);
    }

}

使用 PoJo:

public class PoJo {

    private String a;
    private String b;
    private String c;
    private String d;
    private String e;

    public String getA() {
        return a;
    }

    public void setA(final String a) {
        this.a = a;
    }

    public String getB() {
        return b;
    }

    public void setB(final String b) {
        this.b = b;
    }

    public String getC() {
        return c;
    }

    public void setC(final String c) {
        this.c = c;
    }

    public String getD() {
        return d;
    }

    public void setD(final String d) {
        this.d = d;
    }

    public String getE() {
        return e;
    }

    public void setE(final String e) {
        this.e = e;
    }

}

关于java - 计算代表已填充属性数量的 Java 对象的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44258131/

相关文章:

java - 迭代对象列表、获取属性的最佳方法

java - Java 9 spring boot 应用程序的 maven 构建期间的 RuntimeException

java - Spring AOP 使用 AspectJ 来工作还是什么?

java - Spring Data JPA 分页 - 从方法名称创建查询

java - @Formula - Hibernate 中的 native 查询语法错误

java - AttributeOverrides 注释不会创建正确的列名称

Java - Hibernate @ManyToMany 映射仅在一个方向上添加数据库中的记录

java - 带有正则表达式的 Java 字符串中的 SPARQL 请求

java - 整齐地返回轮廓 - OpenCV/Java

java - Apache CXF |对 Web 服务调用的多个响应