Я недавно конвертировал код из java в scala, пытаясь научить себя языку.
Предположим, что этот класс scala:
class Person() {
var name:String = "joebob"
}
Теперь я хочу получить доступ к нему из java, поэтому я не могу использовать dot-notation, как если бы я был в scala.
Поэтому я могу получить содержимое моего var, выпуская:
person = Person.new();
System.out.println(person.name());
и установите его через:
person = Person.new();
person.name_$eq("sallysue");
System.out.println(person.name());
Это верно, потому что наш класс Person выглядит так: 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();
}
Да, я мог бы писать свои собственные геттеры/сеттеры, но я ненавижу заполнять классы с этим, и это не составляет тонны смысла, учитывая, что у меня уже есть их. Я просто хочу лучше использовать метод _ $eq. (Это действительно ухудшается, когда вы имеете дело с такими вещами, как antlr, потому что тогда вам нужно сбежать от него, и в итоге он выглядит как person.name _\$eq ( "newname" );
Примечание. Мне бы скорее пришлось смириться с этим, а не заполнять мои классы более сложными методами.
Итак, что бы вы сделали в этой ситуации?