为了账号安全,请及时绑定邮箱和手机立即绑定

在Java中设置和获取方法?

在Java中设置和获取方法?

噜噜哒 2019-12-27 12:50:53
如何使用set和get方法,为什么要使用它们?他们真的有帮助吗?还可以给我示例set和get方法吗?
查看完整描述

3 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

Set和Get方法是数据封装的一种模式。您可以定义get访问这些变量的set方法以及修改它们的方法,而不是直接访问类成员变量。通过以这种方式封装它们,您可以控制公共接口,以备将来需要更改类的内部工作方式时使用。


例如,对于成员变量:


Integer x;

您可能有以下方法:


Integer getX(){ return x; }

void setX(Integer x){ this.x = x; }

Chiccodoro还提到了一个重要的观点。如果您只想允许任何外部类对该字段进行读取访问,则可以通过仅提供公共get方法并保留set私有方法或完全不提供a 来做到这一点set。


查看完整回答
反对 回复 2019-12-27
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

我想添加到其他答案中,可以使用setter防止对象处于无效状态。


例如,假设我们必须设置一个建模为String的TaxId。setter的第一个版本可以如下:


private String taxId;


public void setTaxId(String taxId) {

    this.taxId = taxId;

}

但是,我们最好防止使用无效的taxId设置对象,因此我们可以进行检查:


private String taxId;


public void setTaxId(String taxId) throws IllegalArgumentException {

    if (isTaxIdValid(taxId)) {

        throw new IllegalArgumentException("Tax Id '" + taxId + "' is invalid");

    }

    this.taxId = taxId;

}

下一步,要改善程序的模块化,是使TaxId本身成为一个对象,能够对其进行检查。


private final TaxId taxId = new TaxId()


public void setTaxId(String taxIdString) throws IllegalArgumentException {

    taxId.set(taxIdString); //will throw exception if not valid

}

同样对于获取者,如果我们还没有价值怎么办?也许我们想走一条不同的道路,我们可以这样说:


public String getTaxId() throws IllegalStateException {

    return taxId.get(); //will throw exception if not set

}


查看完整回答
反对 回复 2019-12-27
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

我想你想要这样的东西:


public class Person {


  private int age;


  //public method to get the age variable

  public int getAge(){

       return this.age

  }


  //public method to set the age variable

  public void setAge(int age){

       this.age = age;

  }

}

您只是在对象实例上调用这种方法。这种方法特别有用,特别是在设置某些东西会产生副作用的情况下。例如,如果您想对某些事件做出反应,例如:


  public void setAge(int age){


       this.age = age;


       double averageCigarettesPerYear = this.smokedCigarettes * 1.0 / age;


       if(averageCigarettesPerYear >= 7300.0) {

           this.eventBus.fire(new PersonSmokesTooMuchEvent(this));

       }

  }

当然,如果有人忘记打电话给setAge(int)他应该去的地方并age直接使用进行设置,这将很危险this.age。


查看完整回答
反对 回复 2019-12-27
  • 3 回答
  • 0 关注
  • 578 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信