gpt4 book ai didi

java - 在 Scala 中使用私有(private)构造函数和工厂类?

转载 作者:搜寻专家 更新时间:2023-11-01 01:38:23 26 4
gpt4 key购买 nike

如何在 Scala 中使用私有(private)构造函数和静态创建方法实现类?

这是我目前在 Java 中的做法:

public class Tree {
private Node root;

/** Private constructor */
private Tree() {}

public static Tree create(List<Data2D> data) {
Tree tree = new Tree();
return buildTree(tree, data);//do stuff to build tree
}

最佳答案

直接翻译你写的内容会是这样

class Tree private () {
private var root: Node = null
}
object Tree {
def create(data: List[Data2D]) = {
val tree = new Tree()
buildTree(tree,data)
tree
}
}

但这是解决问题的一种有点非 Scalaish 的方法,因为您正在创建一个使用起来可能不安全的未初始化树,并将其传递给各种其他方法。相反,更规范的代码将具有丰富(但隐藏)的构造函数:

class Tree private (val root: Node) { }
object Tree {
def create(data: List[Data2D]) = {
new Tree( buildNodesFrom(data) )
}
}

如果可以那样构建的话。 (在这种情况下,取决于 Node 的结构。如果 Node 必须引用父树,那么这可能要么不起作用,要么会更加尴尬。如果 Node 不需要知道,那么这将是首选样式。)

关于java - 在 Scala 中使用私有(private)构造函数和工厂类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4981574/

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