12
我一直在轉換一些代碼從Java到最近試圖教自己的語言斯卡拉。
假設我們有這樣的Scala類:
class Person() {
var name:String = "joebob"
}
現在我想從Java訪問它,就像我想如果我在斯卡拉我不能用點號。
這樣我就可以發出讓我的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();
}
是的,我可以寫我自己的getters/setters,但我討厭填充類,它並沒有使噸考慮到我已經有了它們 - 我只是想更好地替代_ $ eq方法。 (當你處理像antlr這樣的東西時,這實際上變得更糟,因爲那麼你必須逃避它,並且它最終看起來像person.name _ \ $ eq(「newname」);
注意:我寧願有忍受這個,而不是填補我的班,更setter方法
那麼你會在這種情況下做