Подтвердить что ты не робот

Как использовать эквиваленты POJO в Scala?

Предположим, что у меня есть

class SimpleClass (myInt: Int, myString: String) {

}

Что случилось со следующим?

val mySimple = new SimpleClass(1, "hi")
println(mySimple.myInt)
4b9b3361

Ответ 1

Если вы хотите, чтобы параметры конструктора были доступны как поля класса, вы должны объявить их как vals или vars:

class SimpleClass (val myInt: Int, val myString: String) {

}

Ответ 2

Явный эквивалент вашего определения Scala:

public class SimpleClass {
   public SimpleClass( int myInt, String myString ) {
   }
}

Никаких чудес, это не сработает...

Эй, чувак, это ваш 17-й вопрос Scala, и вы все еще обеспокоены самими языками. Возможно, вам стоит заняться днем ​​и прочитать часть учебника онлайн (или некоторую книгу), чтобы консолидировать ваши знания. Я могу предложить:

Ответ 3

Для полного опыта POJO ™, включая равенство, hashCodes и разумную реализацию toString... Вам нужны классы case:

case class SimpleClass(myInt: Int, myString: String)

val mySimple = SimpleClass(1, "hi")
println(mySimple.myInt)

Параметры класса case автоматически преобразуются в vals. Вы можете явно сделать их vars, если хотите, но такого рода вещи, как правило, не одобряются в Scala, где предпочтительны неизменные объекты.

Ответ 4

Проблема заключается в том, что вы вызываете метод SimpleClass.myInt getter, но вы не определяете метод getter в любом месте. Вам нужно определить метод SimpleClass.myInt getter или еще лучше, получите Scala, чтобы автоматически определить его для вас:

class SimpleClass(val myInt: Int, myString: String) {}