假设我有一个模型类,如下所示:
class User () {
var id: Option[java.lang.Long] = _
var name: Option[String] = _
var date: Option[java.util.Date] = _
def this(id: java.lang.Long,name: String, date: java.util.Date){
this()
this.id=Option(id)
this.name=Option(name)
this.date=Option(date)
}
}
我试图通过做来创建一个对象
var obj = new User
obj.id=12345
obj.name=user
显然 obj.date
是 null
,此时我一直收到 java.lang.NullPointerException
。我应该如何处理这个异常?
最佳答案
我建议您直接通过构造函数初始化值。这看起来像一个 POSO(Plain Old Scala Object),所以也许你最好使用不可变的案例类:
case class User(id: Option[Long], name: Option[String], date: Option[Date])
现在如果你只想初始化一些属性,你可以传递 None
或者通过伴随对象创建一个辅助构造函数:
case class User(id: Option[Long], name: Option[String], date: Option[Date])
object User {
def apply(id: Option[Long], name: Option[String]) = {
User(id, name, None)
}
}
编辑:
如果 Java 互操作很重要,您可以在案例类中定义多个构造函数,这些构造函数将在 Java 中可见:
case class User(id: Option[Long], name: Option[String], date: Option[Date]) {
def this(id: Long, name: String) = {
this(Some(id), Some(name), None)
}
}
关于java - 在 Scala 中处理 java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37454738/