문제

저는 Java를 처음 사용하지만 Actionscript 3에 대한 OOP 경험이 있으므로 내가 아는 것들에 의존하는 것을 마이그레이션하려고합니다.

ActionScript 3에서는 Get and Set 키워드를 사용하여 Getters 및 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 and 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와 동등한 것이 있습니까?

도움이 되었습니까?

해결책

아니요. as3 getters and setters는 ecmascript입니다. Java에서는 getVal () 및 setVal () 스타일 기능에 붙어 있습니다.

Eclipse는 이러한 유형의 물건을 자동으로 발전시키는 데 도움이 될 수 있다고 생각합니다.

다른 팁

자바 코드는 괜찮습니다. _name 사적인.

아니요 가져 오기 그리고 세트 AS3 예에서와 같이 Java의 키워드. 죄송합니다. 이미하고있는 것보다 나아지지 않습니다.

수정 코드 :

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;
  }
}

안타깝게도 Java에는 동등한 언어 수준의 지원이 없습니다.

get* and set* 패턴은 Java 문화에서 매우 설립되어 그들에 대한 강력한 IDE 지원을 찾을 수 있습니다 (예 : Eclipse는 자동으로 당신을 위해 그것을 만들 것입니다). JSPS (EL) 용으로 만들어지면 속성 표기법을 사용하여 Getters 및 Setter에 액세스 할 수 있습니다.

코드를 더 복잡하게 만드는 것을 제외하고는 귀하의 경우에는 아무 것도하지 않기 때문에 Getter 또는 Setter가 없다고 생각합니다. 다음은 getters 또는 setter가없는 예입니다.

class Dummy {
  public String name;
  public Dummy(String name) { this.name = name; }
}

Dummy dummy = new Dummy("fred");
System.out.println(dummy.name);//getter, prints: fred
dummy.name = "lolo";//setter
System.out.println(dummy.name);//getter, prints: lolo

IMHO는 필요한 것보다 더 복잡하지 않습니다. 복잡성을 추가하는 경우가 종종 당신은 gonna-need-it입니다

IDE 독립적 인 방법은 사용하는 것입니다 롬복, getters, setter 및 심지어도 생성하는 주석 기반 라이브러리 equals() 그리고 hashcode(). 컴파일러에 대해서는이 작업을 수행하지만 소스 파일에는 그렇지 않으므로 메소드를 볼 필요가 없습니다.

Java에서는 객체의 내부를 노출시키지 않고 유일한 옵션은 예에서와 같이 자신의 게터와 세터를 만드는 것입니다.

컨벤션은 Prepend입니다 get 또는 set 바뀌고있는 들판 앞에서. 예에서와 같이 필드 name 했을 것입니다 getName 그리고 setName 각각 해당 게터 및 세터로서의 방법.

또한 세터와 getter를 추가하기 전에 해당 물체의 내부 데이터를 노출시키는 이유를 스스로에게 물어 보는 것이 좋습니다.
이 기사를 읽는 것이 좋습니다.http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top