gpt4 book ai didi

java - 由公共(public)方法初始化的私有(private)构造函数

转载 作者:行者123 更新时间:2023-12-01 07:09:50 25 4
gpt4 key购买 nike

我遇到了一个带有私有(private)构造函数的类,但该对象是由另一个公共(public)方法通过调用私有(private)构造函数返回的。当我们可以将构造函数公开时,这种构造的优点是什么?

public final class TokenTable {

static public int errorToken = 0;
static public int timesToken = 1;
static public int divToken = 2;
static public int plusToken = 11;
......
......

private final HashMap<String, Integer> keywordMap = new HashMap();
private final HashMap<String, Integer> operationMap = new HashMap();

private TokenTable() {

operationMap.put("*", timesToken);
operationMap.put("/", divToken);
operationMap.put("+", plusToken);
....



}


static public TokenTable getInstance() {

LexTokenTabInstance = new TokenTable();
return LexTokenTabInstance;
}

}

最佳答案

这称为 Factory图案。查看说明here - Factory Design Pattern .

有几个优点:

  • 您可以使用多个命名工厂方法来创建不同风格的对象,从而允许使用同一组参数类型进行重载
  • 如果合适,您可以返回一个单例,或者返回一组缓存的实例之一
  • 如果不需要使用new
  • 使用泛型时,泛型类型由编译器推断,因此不需要使用 <>运算符
  • 您可以返回接口(interface)而不是具体类
  • 允许预构造函数初始化(例如,如果 init 必须在调用基类构造函数之前完成)

需要明确的是,上面的示例似乎只是作为“良好实践”完成的,因为没有使用上述任何功能(除了您不必使用“new”)。

关于java - 由公共(public)方法初始化的私有(private)构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16668814/

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