java actionscript-3 setter getter accessor

Getters/setters en Java



actionscript-3 accessor (7)

Soy nuevo en Java, pero tengo algo de experiencia en OOP con ActionScript 3, así que estoy tratando de migrar confiando en cosas que conozco.

En ActionScript 3 puede crear getters y setters utilizando las palabras clave get y set, lo que significa que crea un método en la clase y accede a los datos a través de una propiedad de una instancia de esa clase. Puede parecer complicado, pero no lo es. Aquí hay un ejemplo:

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

Y accedería al name en un objeto como:

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

¿Cómo haría eso en Java?

Solo tener algunos campos públicos está fuera de discusión. Me di cuenta de que existe esta convención de usar get y set en frente de los métodos, con lo que estoy de acuerdo.

Por ejemplo,

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

¿Hay un equivalente de getter / setters de ActionScript 3 en Java, como el acceso a un campo privado como un campo de una instancia de la clase, pero que tiene un método para implementarlo internamente en la clase?



Consideraría no tener el getter o setter ya que no hacen nada en su caso, excepto que el código sea más complicado. Aquí hay un ejemplo sin getters o setters.

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

En mi humilde opinión, no hagas las cosas más complicadas de lo necesario. Con demasiada frecuencia, el hecho de agregar complejidad sufrirá de You-Aint-Gonna-Need-It


En Java, la única opción que tiene sin exponer las partes internas de su objeto es hacer sus propios getters y setters como lo hizo en su ejemplo.

La convención es anteponer get o set en frente del campo que se está alterando. Entonces, como en su ejemplo, el name del campo tendría los métodos getName y setName como su getter y setter correspondientes, respectivamente.


Lamentablemente, no, no existe el soporte de nivel de idioma equivalente en Java.

Sin embargo, los patrones get * y set * están tan establecidos en la cultura java que encontrará un soporte IDE fuerte para ellos (p. Ej., Eclipse los hará automáticamente), y si está trabajando en algo que usa primero el lenguaje de expresiones hecho para jsps (EL), entonces podrá usar la notación de propiedad para acceder a getters y setters.


Nop. Los getters y setters de AS3 son una cosa de ECMAScript. En Java, está atascado con las funciones de estilo getVal () y setVal (); no hay ningún azúcar sintáctico que le facilite las cosas.

Creo que Eclipse puede ayudar a generar automáticamente ese tipo de cosas ...


Su código Java está bien, excepto que lo haría, desea hacer que _name privado .

No hay palabras clave get y set en Java como en su ejemplo de AS3. Lo siento, no es mejor que lo que ya estás haciendo.

Código corregido:

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


Una forma independiente de IDE es usar Lombok , una biblioteca basada en anotaciones que genera getters, setters e incluso equals() y hashcode() . Hace esto para el compilador, pero no en el archivo de origen, por lo que no tiene que mirar los métodos, simplemente utilícelos.