- JavaBean 的使用在工程中也是很重要的一部分,先来看看 Java 中 JavaBean 的使用:
public class JCar {
private int miles;
private final int year;
public JCar(int theYear) {
this.year = theYear;
}
public int getMiles() {
return miles;
}
public void setMiles(int miles) {
this.miles = miles;
}
public int getYear() {
return year;
}
public static void main(String[] args) {
JCar car = new JCar(2022);
System.out.println("Year: " + car.getYear());
System.out.println("Miles: " + car.getMiles());
car.setMiles(200);
System.out.println("Miles: " + car.getMiles());
}
}
打印结果:
Year: 2022
Miles: 0
Miles: 200
- 在 Groovy 中,优化了 JavaBean 的写法:
class Car {
// int miles
def miles = 0
final year
Car(year) {
this.year = year
}
}
Car car = new Car(2022)
println "Year: $car.year"
println "Miles: $car.miles"
car.miles = 20
println "Miles: $car.miles"
打印结果:
Year: 2022
Miles: 0
Miles: 20
在上面的代码中,def 是申明了一个属性,当然也可以使用
int miles
这样的语句。 Groovy 会自动为其成员变量创建 getter 和 setter 方法。当在代码中调用变量时,其实是在调用该变量的访问器。要把属性设置为只读的,需要使用 final 来声明该属性。这是,Groovy 会为该属性提供 getter 方法,但不提供 setter 方法,修改 final 字段的任何操作都会导致异常。
也可以把变量声明为 private,但是 Groovy 并不遵守这一点,因此如果想把变量设置为私有的,必须实现一个拒绝任何修改的 setter 方法。