Java 中的 Getters/setters

2022-09-01 22:50:57

我是Java的新手,但是对ActionScript 3有一些OOP经验,所以我正试图依靠我所知道的东西进行迁移。

在 ActionScript 3 中,可以使用 get 和 set 关键字创建 getter 和 setter,这意味着您可以在类中创建一个方法,并通过该类的实例的属性访问数据。我可能听起来很复杂,但事实并非如此。下面是一个示例:

class Dummy{

    private var _name:String;

    public function Dummy(name:String=null){
        this._name = name;
    }

    //getter
    public function get name():String{
        return _name;
    }

    //setter
    public function set name(value:String):void{
    //do some validation if necessary
        _name = value;
    }

}

我会在对象中访问为:name

var dummy:Dummy = new Dummy("fred");
trace(dummy.name);//prints: fred
dummy.name = "lolo";//setter
trace(dummy.name);//getter

在Java中我该怎么做?

仅仅拥有一些公共领域是不可能的。我注意到有一种在方法前面使用get和set的约定,我对此感到满意。

例如

class Dummy{

    String _name;

    public void Dummy(){}

    public void Dummy(String name){
        _name = name;
    }

    public String getName(){
        return _name;
    }

    public void setName(String name){
        _name = name;
    }

}

Java 中是否有与 ActionScript 3 getter/setter 等效的字段,就像从类的实例访问私有字段一样,但是有一个在类内部实现该字段的方法?


答案 1

不。AS3 getters 和 setters 是 ECMAScript 的一个东西。在Java中,你被困在getVal()和setVal()风格的函数中 - 没有任何语法糖可以让你轻松。

我认为Eclipse可以帮助自动生成这些类型的东西,


答案 2

你的Java代码很好,除了你想把私有化。_name

Java 中没有 getset 关键字,如 AS3 示例所示。抱歉,它不会比你已经做的事情更好。

更正的代码:

class Dummy {
  private String _name;

  public void Dummy() {}

  public void Dummy(String name) {
    setName(name);
  }

  public String getName() {
    return _name;
  }

  public void setName(String value) {
    _name = value;
  }
}

推荐