第一种 成员变量public
/**
public class JavaType {
/**
* 是否基元类型
*/
public boolean isPrimitive;
/**
* 是否数组
*/
public boolean isArray;
}
第二种 get set器
/**
public class JavaType {
/**
* 是否基元类型
*/
private boolean isPrimitive;
/**
* 是否数组
*/
private boolean isArray;
public boolean isPrimitive() {
return isPrimitive;
}
public void setPrimitive(boolean primitive) {
isPrimitive = primitive;
}
public boolean isArray() {
return isArray;
}
public void setArray(boolean array) {
isArray = array;
}
}
第三种 lombok.Data;
/**
@Data
public class JavaType {
/**
* 是否基元类型
*/
private boolean isPrimitive;
/**
* 是否数组
*/
private boolean isArray;
}
这三种我都使用过,目前更倾向使用lombok.Data;
第二种方式get set器, 我从第一次接触java语言就有疑问为什么需要get set器?我翻遍《阿里巴巴Java编程规范》相关描述是get set 不要添加额外逻辑,就是只做返回值和赋值。
没有提到get set 器 和public 成员变量有何意义!
国内外众说纷纭,公说公有理,婆说婆有理。引发十几二十年的论战。
背景资料交代完毕,我整理一下问题如下
1.三种方式的利弊分别是什么?2.我该如何运用三种方式?3.第三种 lombok.Data;是可以长期使用下去吗?
1、直接public成员变量模式,现在很少用,主要是对于内部数据没有任何验证和保护措施。
2、getter和setter访问器模式使用比较多,这个也是传统的方式。访问器可以封装特定的代码,添加安全验证和检查的逻辑,对内部成员变量提供保护。这里《阿里巴巴Java开发手册》16条关于getter和setter访问器的描述,应该指的是业务逻辑代码,后面有例子你可以看看。
3、 lombok.Data更简单,说白了是语法糖,通过使用注解,帮助我们对于POJO类型的私有成员自动生成getter和setter访问器和构造函数代码,当然这样简洁,方便。如果版本允许,可以考虑第三种方式,实在不行选择第二种模式。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。