我正在尝试构建一个树,其中一个节点可以有多个子节点(见下文)。当我尝试运行下面的应用程序时,我在数据案例类的声明中得到以下内容
线程“main”中的异常java.lang.StackOverflowError
这是什么意思?
// data: information stored in the node
// list: list of children nodes
// parent: pointer to the parent
case class Node[A] ( data: A, var list: List[Node[A]], var parent: Node[A] )
case class Data (descrip: String)
object Tree extends App {
val root = Node(Data("root"),null,null)
val node1 = Node(Data("node1"),null,root)
val node2 = Node(Data("node2"),null,root)
val list = List(node1, node2)
root.list = list
println(root)
}
答案 0 :(得分:2)
这意味着您的结构具有无限循环。 root.list
包含node1
和node2
,其中包含root
。
尝试打印(*)root
,但要打印root
,需要打印nodes
1和2,但要打印这些,需要打印root
等等,永无止境,最终炸毁堆栈,这是JVM中存储方法调用信息的东西。
(*)这里使用的单词“print”相当松散,实际上是object.toString
对object
所涉及的每个app
-templates
-registration
-logout.html
-base.html
的调用。