如果我使用通用的setter方法代替POJO中的多个setter方法,是否有任何性能或任何其他问题,或者这是一种不好的做法?

时间:2016-11-09 15:19:48

标签: java

我想使用一个通用的setter方法,它将Object作为参数,在setter中我将设置属性的值。例如,代替

public class Student {
    private Long id; 
    private String name;
    private int age;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

我想用这个:

public class Student {
    private Long id; 
    private String name;
    private int age;

    public Long getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public void setValues(Object propertyValue) {
        if(propertyValue instanceof Long){
            this.id = (Long) propertyValue;
        }else if(propertyValue instanceof String){
            this.name = (String) propertyValue;
        }else if(propertyValue instanceof Integer){
            this.age = (Integer) propertyValue;
        }
    }
}

注意:在我的POJO中,所有属性都具有唯一类型(多个属性没有重复类型)。

1 个答案:

答案 0 :(得分:1)

首先,应始终避免施放。

第二,它比设置者慢(不需要检查instanceof)

第三,它甚至占用了更多的内存!您使用10行替换3个setter,这只需要9行:P

第四,它非常难看!但是,嘿,这只是我的意见

第五,它不灵活,如果你向你的pojo添加任何东西,你必须仔细添加支票或者甚至可能还原到setter