gpt4 book ai didi

scala - Scala 中的一个奇怪的 NullPointerException

转载 作者:行者123 更新时间:2023-12-05 00:56:47 28 4
gpt4 key购买 nike

代码在这里:

abstract class Element {
def contents: Array[String]
val height = contents.length
val width = if(height ==0 ) 0 else contents(0).length

override def toString = contents(0)
}
class ArrayElement(override val contents: Array[String]) extends Element

class LineElementT(s: String) extends Element {
override def contents = Array(s)
}

class LineElementF(s: String) extends Element {
override val contents = Array(s)
}

除了 LineElementF,这三个子类都可以, 抛出 NullPointerException使用 val lef = new LineElementF("Wrong") 创建实例时

最佳答案

此 NPE 发生在高度初始化时。在高度初始化时,LineElementF 的 val 内容未初始化。

您可以通过将高度和宽度声明为惰性来避免这种 NPE:

lazy val height = contents.length
lazy val width = if(height ==0 ) 0 else contents(0).length

关于scala - Scala 中的一个奇怪的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35742340/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com