假设我有以下内容
class SimpleClass (myInt: Int, myString: String) {
}
这个问题的错误在哪里?val mySimple = new SimpleClass(1, "hi")
println(mySimple.myInt)
假设我有以下内容
class SimpleClass (myInt: Int, myString: String) {
}
这个问题的错误在哪里?val mySimple = new SimpleClass(1, "hi")
println(mySimple.myInt)
如果你想让构造函数参数作为类的字段可用,你必须将它们声明为val或var:
class SimpleClass (val myInt: Int, val myString: String) {
}
如果您想要完整的POJO体验™,包括相等性、哈希码和合理的toString
实现... 您将需要使用case类:
case class SimpleClass(myInt: Int, myString: String)
val mySimple = SimpleClass(1, "hi")
println(mySimple.myInt)
case class的参数会自动变成vals。如果需要,您可以将它们明确地设为vars,但在Scala中这种做法通常不被赞成 - 因为它更加支持不可变对象。
你的Scala定义在Java中的等价物是:
public class SimpleClass {
public SimpleClass( int myInt, String myString ) {
}
}
难怪它不工作...
嘿,伙计,这已经是你的第17个Scala问题了,而且你仍然困扰着语言的基础知识。也许你应该花一个下午阅读一些在线教程(或者某些书籍)来巩固你的知识。我可以建议以下资料:
SimpleClass.myInt
的getter方法,但是你没有定义getter方法。你需要定义SimpleClass.myInt
的getter方法,或者更好的方法是让Scala自动为你定义它:class SimpleClass(val myInt: Int, myString: String) {}
case class
更接近于 POJO;详情请参见:https://dev59.com/Zmkw5IYBdhLWcg3wwNN5 - Neil