He estado convirtiendo algunos códigos de Java a Scala últimamente tratando de enseñarme el idioma.
Supongamos que tenemos esta clase Scala:
class Person() {
var name:String = "joebob"
}
Ahora quiero acceder a ella desde java así que no puedo usar la notación punto-como lo haría si estuviera en la Scala.
Así que puedo obtener el contenido de mi var mediante la emisión:
person = Person.new();
System.out.println(person.name());
y configurarlo a través de:
person = Person.new();
person.name_$eq("sallysue");
System.out.println(person.name());
Esto es así porque nuestra clase Person es la siguiente con javap:
Compiled from "Person.scala"
public class Person extends java.lang.Object implements scala.ScalaObject{
public Person();
public void name_$eq(java.lang.String);
public java.lang.String name();
}
Sí, podría escribir mis propios getters/setters pero odio llenar las clases con eso y no hace una tonelada de sentido considerando que ya los tengo; solo quiero aliar el método _ $ eq mejor. (Esto en realidad empeora cuando se trata de cosas como antlr porque entonces hay que escapar y termina luciendo como person.name _ \ $ eq ("newname");
Nota: Prefiero tener a aguantar esto en lugar de llenar mis clases con más métodos setter
Entonces, ¿qué haría usted en esta situación