有没有办法用另一种方法或其他做同样工作的方法替换这些方法(Getter和Setter)。因为我的学习,我问这个问题。
public class Item {
private String name;
private int sellIn;
private int quality;
public Item(String name, int sellIn, int quality) {
this.name = name;
this.quality = quality;
this.sellIn = sellIn;
}
public void setSellIn(int sellIn) {
this.sellIn = sellIn;
}
public void setQuality(int quality) {
this.quality = quality;
}
public String getName() {
return name;
}
public int getSellIn() {
return sellIn;
}
public int getQuality() {
return quality;
}
}
非常感谢。
答案 0 :(得分:2)
在Java中检索和更新类中字段的正确方法是使用getter和setter方法。
尽管如此,Project Lombok旨在帮助开发人员不要编写这些方法并使用注释来为您生成getter,setter和其他方法,例如equals
和hashCode
。< / p>
以下是其网站中演示的代码示例:
public @Data class Mountain {
private final String name;
private final double latitude, longitude;
private String country;
}
它将生成此代码:
public class Mountain {
private final String name;
private final double latitude, longitude;
private String country;
public Mountain(String name, double latitude, double longitude) {
this.name = name;
this.latitude = latitude;
this.longitude = longitude;
}
public String getName() {
return this.name;
}
public double getLatitude() {
return this.latitude;
}
public double getLongitude() {
return this.longitude;
}
public String getCountry() {
return this.country;
}
public void setCountry(String country) {
this.country = country;
}
@Override
public String toString() {
//...
}
@Override
public int hashCode() {
//...
}
@Override
public boolean equals(Object o) {
//...
}
}
这使得代码与JavaBeans specification兼容,{{3}}被几个框架使用,如Hibernate,JPA,Expression Language,JSF,Spring等......
答案 1 :(得分:2)
Getters和Setters是惯例,没有别的。 (好吧,为了准确起见,它们在JavaBeans specification中定义,但这不是语言的约束力。)如果由于某种原因你不想要,你可以用不同的名称命名它们。遵循惯例;这可能会造成混乱,但这是可能的。例如,你可以有
public class Item {
private String name;
private int sellIn;
private int quality;
public Item(String name, int sellIn, int quality) {
this.name = name;
this.quality = quality;
this.sellIn = sellIn;
}
public void declareSellInAs(int sellIn) {
this.sellIn = sellIn;
}
public void makeQualityBe(int quality) {
this.quality = quality;
}
public String retrieveName() {
return name;
}
public int whatIsSellIn() {
return sellIn;
}
public int howGoodIsTheQuality() {
return quality;
}
}
除非你有一个非常好的理由,否则我不建议你这样做。如果您破坏了与JavaBeans规范的兼容性,许多依赖它的框架都会出现代码问题。