今天教老婆如何创建一个对象并赋值。
首先创建一个类,getter/setter方法略,可以使用快捷键自动生成( IDEA 快捷键是alt + insert),也可以使用lombok的@Getter/@Setter注解:
public class Person {
// 无参构造函数
public Person() {
}
// 有参构造函数
public Person(int age, String firstName) {
this.age = age;
this.firstName = firstName;
}
// Java 8个基本类型
private int age;
private long legLength;
private float height;
private double weight;
private char sex;
private byte fingerLength;
private short hairLength;
private boolean highEQ;
// 常用类型,包装类型遇到再说
private String firstName;
private BigDecimal hairNumbers;
}
使用三种方式给属性赋值:
第一种:使用无参构造函数,并调用set方法进行属性赋值。
Person shelly = new Person();
shelly.setAge(18);
shelly.setFirstName("Shelly");
......
第二种:使用有参构造函数,给部分属性赋值。
Person shelly = new Person(18, "Shelly");
第三种:使用Builder模式来灵活的给属性赋值。 Builder看上去高大上一些,多使用[呲牙]。目前使用的是lombok的@Builder注解自动生成builder代码,使用如下:
Person shelly = new PersonBuilder().age(18).firstName("Shelly").height(165).weight(50).build();
优点:相比于有参 构造函数 ,builder模式更加灵活,不受有参构造函数参数个数的限制,也更加符合人的编码思想习惯。
缺点:使用lombok注解会增加程序的编译时间(主要是lombok自动生成builder代码的时间),不过相对于它的好处无关紧要,所以放心用。
其实还有第四种:
public class Person {
// Java 8个基本类型
public int age;
public long legLength;
public float height;
public double weight;
public char sex;
public byte fingerLength;
public short hairLength;
public boolean highEQ;
// 常用类型,包装类型遇到再说
public String firstName;
public BigDecimal hairNumbers;
}
去除getter/setter方法与有参构造函数,将属性访问权限设置为public,使用时如下:
Person person = new Person();
person.age = 5;
person.firstName = "Shelly";
看上去挺好,既没有getter/setter代码,使用也简单,但是为什么不这么用呢?老婆表示她不想知道,后面等她想知道的时候再说[笑哭]。