Załóżmy, że mam następująceJak używać ekwiwalentów POJO w Scali?
class SimpleClass (myInt: Int, myString: String) {
}
Co jest nie tak z następujących powodów?
val mySimple = new SimpleClass(1, "hi")
println(mySimple.myInt)
Załóżmy, że mam następująceJak używać ekwiwalentów POJO w Scali?
class SimpleClass (myInt: Int, myString: String) {
}
Co jest nie tak z następujących powodów?
val mySimple = new SimpleClass(1, "hi")
println(mySimple.myInt)
Jeśli chcesz parametry contructor być dostępne jako pola klasy, trzeba zadeklarować je jako Vals lub Vars:
class SimpleClass (val myInt: Int, val myString: String) {
}
Pełen POJO Experience ™, w tym równości, hashCodes i sane realizacja toString
... będziemy chcieli klas przypadków:
case class SimpleClass(myInt: Int, myString: String)
val mySimple = SimpleClass(1, "hi")
println(mySimple.myInt)
parametrów do klasy sprawy są automatycznie wykonane w odstępach. Ty, , możesz jawnie zrobić je vars, jeśli chcesz, ale to coś jest zwykle źle widziana w Scala - gdzie niezmienne obiekty są faworyzowane.
Problem polega na tym, że wywołuje się metodę pobierającą SimpleClass.myInt
, ale użytkownik nie zdefiniował metody pobierającej w dowolnym miejscu. Trzeba zdefiniować metodę SimpleClass.myInt
getter lub nawet jeszcze lepiej, dostać Scala automatycznie definiować go dla Ciebie:
class SimpleClass(val myInt: Int, myString: String) {}
Odpowiednik Java z definicji Scala jest:
public class SimpleClass {
public SimpleClass(int myInt, String myString) {
}
}
Nie dziwi to robi” t praca ...
Hej, koleś, to jest twoje 17-sze pytanie o scalę i wciąż jesteś zaniepokojony podstawami tego języka. Być może powinieneś wziąć popołudnie i przeczytać niektóre samouczki on-line (lub jakąś książkę), aby skonsolidować swoją wiedzę. Mogę zaproponować:
+1 dla "Hej koleś" :-) – Landei
Albo zadeklarować klasę jako "klasę case", gdzie można uzyskać tego rodzaju rzeczy za darmo. –
'case class' jest bliżej POJO; zobacz szczegóły: http://stackoverflow.com/questions/9673233/how-is-the-pojo-javabean-pattern-treated-in-scala – Neil