En este post te voy a explicar como funcionan los Getters y Setters en Scala.
¿Qué es un getter y un setter?.
Un getter y un setter es un mecanismo para aislar una variable dentro de una estructura de datos. Creas un método de acceso para leer y otro para asignar un valor. El uso de estos, se hace por convención, no obtienes ninguna ganancia al usarlos, pero tampoco te va a perjudicar si los incluyes en tus clases.
Getters y Setters estilo «bean».
Java, al menos las versiones que conozco, que son pocas, no tienen el concepto de propiedad. Los getters y setters son métodos. A diferencia de otros lenguajes que contemplan un tratamiento distinto.
class MyClass { | |
var _myField: String = _ | |
def setMyField(myField:String) = { | |
this._myField = myField | |
} | |
def getMyField() ={ | |
_myField | |
} | |
} | |
var myClass = new MyClass() | |
myClass.setMyField("myField") | |
println(myClass.getMyField()) |
Read-only getters.
En algún momento tendrás que construir objetos inmutables, o con valores solo de lectura. Para esto únicamente tienes que generar el Getter, sin especificar el Setter.
class MyReadOnlyClass(_myReadOnlyField:String) { | |
def getMyReadOnlyField() = { | |
_myReadOnlyField | |
} | |
} | |
var myClass = new MyReadOnlyClass("ReadOnly") | |
println(myClass.getMyReadOnlyField()) |
Getters y Setters con BeanProperty.
Puedes utilizar la anotación BeanProperty para que el intérprete genere los getters o setters por ti.
import scala.beans.{BeanProperty, BooleanBeanProperty} | |
class MyClass { | |
@BeanProperty | |
var myField = "" | |
@BooleanBeanProperty | |
var myBooleanProperty = false | |
@BooleanBeanProperty | |
val myReadOnlyProperty = true | |
} | |
var myClass = new MyClass() | |
myClass.setMyField("myField") | |
println(myClass.getMyField()) | |
myClass.setMyBooleanProperty(true) | |
println(myClass.isMyBooleanProperty) | |
println(myClass.myReadOnlyProperty) |
- NVL in SQL Server - 2023-11-01
- ¿Que es Cake Build? - 2023-02-22
- #How to fix error: MSB4019: The imported project «Microsoft.Data.Tools.Schema.SqlTasks.targets» was not found - 2023-02-20