首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java:接受参数的空构造函数

Java:接受参数的空构造函数
EN

Stack Overflow用户
提问于 2015-11-13 17:04:17
回答 1查看 87关注 0票数 0

我试着理解Wikipedia上描述的延迟初始化模式。有一个接受FRUIT_TYPE类型参数的构造函数。在初始化时,将检查散列映射是否已经具有给定的水果类型,如果没有,则使用构造函数来创建给定类型的水果。然后将水果放入地图中。我复制粘贴了这个示例,它工作得很好。而是如何在没有(Imo)必要字段的情况下创建水果,以将其设置为构造函数中的给定参数,例如。

代码语言:javascript
复制
private FRUIT_TYPE fruitType;
private Fruit(FRUIT_TYPE type){this.fruitType = type}

我遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2015-11-13 17:20:45

为了回答您的问题,该示例中的单个Fruit实例不知道自己的类型。在人为设计的示例中,它不需要知道,因为类型既不被检查也不被使用。

我强烈建议不要效仿这个例子。它有多个问题,其中最重要的是缺少类型字段:

即使是高并发版本的

  • 也不是线程安全的(参见http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html)
  • It是高度人为设计的,很难使用。以下内容可能更符合典型用例:

类水果{私有静态最终AtomicReference香蕉=新AtomicReference<>();私有FruitType类型;私有水果(FruitType类型) {this.type =类型;someExpensiveCall();}静态水果getBanana() {水果b= banana.get();if (b == null) { banana.compareAndSet(null,新香蕉());b= banana.get();}返回b;}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33689081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档