- JavaBean 的使用在工程中也是很重要的一部分,先來(lái)看看 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());
}
}
打印結(jié)果:
Year: 2022
Miles: 0
Miles: 200
- 在 Groovy 中,優(yōu)化了 JavaBean 的寫(xiě)法:
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"
打印結(jié)果:
Year: 2022
Miles: 0
Miles: 20
在上面的代碼中,def 是申明了一個(gè)屬性,當(dāng)然也可以使用
int miles
這樣的語(yǔ)句粪糙。 Groovy 會(huì)自動(dòng)為其成員變量創(chuàng)建 getter 和 setter 方法。當(dāng)在代碼中調(diào)用變量時(shí)忿项,其實(shí)是在調(diào)用該變量的訪問(wèn)器蓉冈。要把屬性設(shè)置為只讀的,需要使用 final 來(lái)聲明該屬性轩触。這是寞酿,Groovy 會(huì)為該屬性提供 getter 方法,但不提供 setter 方法脱柱,修改 final 字段的任何操作都會(huì)導(dǎo)致異常伐弹。
也可以把變量聲明為 private,但是 Groovy 并不遵守這一點(diǎn)榨为,因此如果想把變量設(shè)置為私有的惨好,必須實(shí)現(xiàn)一個(gè)拒絕任何修改的 setter 方法。