在 Java 中是否可以让构造函数返回类的另一个实例,而不是构造/返回自身?

2024-03-06

Java中是否可以有一个构造函数返回another类的实例,而不是构造/返回自身?

有点像

public class Container {
    private static Container cachedContainer = new Container(5,false);
    private int number;
    public Container(int number, boolean check) {
        if (number == 5 && check) {
            return cachedContainer;   // <-- This wouldn't work
        }
        this.number = number;
    }
}

在该示例中,如果您创建一个包含数字 5 的对象(并使用“check”标志),它将“中断”构造,并为您提供一个已包含 5 的预先存在的对象。任何其他数字都不会导致这种情况中断。


不,那是静态的地方工厂方法模式 http://en.wikipedia.org/wiki/Factory_method_pattern进来

您可以在静态工厂方法中进行自定义计算并确定是否创建实例

考虑这个作为你的例子:

public static Container createContainer(int number, boolean check) {
    if (number == 5 && check) {
      // returned cached instance
    }
    // construct new instance and return it
}

来自有效的java

第 1 项:考虑静态工厂方法而不是构造函数

Summary:

  • 可以有名称以便与客户进行清晰的沟通
  • 您可以执行自定义逻辑,而不必每次都创建实例
  • 你可以返回一个子类型

Also See

  • 如何创建具有多个使用相同参数类型的构造函数的类 https://stackoverflow.com/questions/19643989/how-to-create-a-class-with-multiple-constructors-that-use-the-same-parameter-typ
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Java 中是否可以让构造函数返回类的另一个实例,而不是构造/返回自身? 的相关文章

  • 如何在 JavaFX 中连接可观察列表?

    我所说的串联是指获得一个新列表 该列表侦听所有串联部分的更改 方法的目的是什么FXCollections concat ObservableList
  • 与 Eclipse 中的 Java Content Assist 交互

    作为我的插件项目的一部分 我正在考虑与 Eclipse 在 Java 文件上显示的内容辅助列表进行交互 我正在尝试根据一些外部数据对列表进行重新排序 我看过一些有关创建新内容辅助的教程 但没有看到有关更改现有内容辅助的教程 这可能吗 如果是
  • eclipse行号状态行贡献项是如何实现的?

    我需要更新状态行编辑器特定的信息 我已经有了自己的实现 但我想看看 eclipse 贡献项是如何实现的 它显示状态行中的行号 列位置 谁能指点一下 哪里可以找到源代码 提前致谢 亚历克斯 G 我一直在研究它 它非常复杂 我不确定我是否了解完
  • 为什么即使我的哈希码值相同,“==”也会返回 false

    我写了一个像这样的课程 public class HashCodeImpl public int hashCode return 1 public static void main String args TODO Auto generat
  • 什么是抽象类? [复制]

    这个问题在这里已经有答案了 当我了解抽象类时 我说 WT H 问题 创建一个无法实例化的类有什么意义呢 为什么有人想要这样的课程 什么情况下需要抽象类 如果你明白我的意思 最常见的是用作基类或接口 某些语言有单独的interface构建 有
  • 如何在 Java 中向时间戳添加/减去时区偏移量?

    我正在使用 JDK 8 并且玩过ZonedDateTime and Timestamp很多 但我仍然无法解决我面临的问题 假设我得到了格式化的Timestamp在格林威治标准时间 UTC 我的服务器位于某处 假设它设置为Asia Calcu
  • 从jar中获取资源

    我有包含文件的 jar myJar res endingRule txt myJar wordcalculator merger Marge class 在 Marge java 中我有代码 private static final Str
  • 如何在.NET中使用java.util.zip.Deflater解压缩放气流?

    之后我有一个转储java util zip Deflater 可以确认它是有效的 因为 Java 的Inflater打开它很好 并且需要在 NET中打开它 byte content ReadSample sampleName var inp
  • 在 Java 中获取并存储子进程的输出

    我正在做一些需要我开始子处理 命令提示符 并在其上执行一些命令的事情 我需要从子进程获取输出并将其存储在文件或字符串中 这是我到目前为止所做的 但它不起作用 public static void main String args try R
  • JDBC 时间戳和日期 GMT 问题

    我有一个 JDBC 日期列 如果我使用 getDate 则会得到 date 仅部分2009 年 10 月 2 日但如果我使用 getTimestamp 我会得到完整的 date 2009 年 10 月 2 日 13 56 78 890 这正
  • 不可变的最终变量应该始终是静态的吗? [复制]

    这个问题在这里已经有答案了 在java中 如果一个变量是不可变的并且是final的 那么它应该是一个静态类变量吗 我问这个问题是因为每次类的实例使用它时创建一个新对象似乎很浪费 因为无论如何它总是相同的 Example 每次调用方法时都会创
  • 如何区分从 Saxon XPathSelector 返回的属性节点和元素节点

    给定 XML
  • 使用 HtmlUnit 定位弹出窗口

    我正在构建一个登录网站并抓取一些数据的程序 登录表单是一个弹出窗口 所以我需要访问这个www betexplorer com网站 在页面的右上角有一个登录链接 写着 登录 我单击该链接 然后出现登录弹出表单 我能够找到顶部的登录链接 但找不
  • 将 JScrollPane 添加到 JFrame

    我有一个关于向 Java 框架添加组件的问题 我有一个带有两个按钮的 JPanel 和一个添加了 JTable 的 JScrollPane 我想将这两个添加到 JFrame 中 我可以将 JPanel 添加到 JFrame 或将 JScro
  • 在java中以原子方式获取多个锁

    我有以下代码 注意 为了可读性 我尽可能简化了代码 如果我忘记了任何关键部分 请告诉我 public class User private Relations relations public User relations new Rela
  • 子类构造函数(JAVA)中的重写函数[重复]

    这个问题在这里已经有答案了 为什么在派生类构造函数中调用超类构造函数时 id 0 当创建子对象时 什么时候在堆中为该对象分配内存 在基类构造函数运行之后还是之前 class Parent int id 10 Parent meth void
  • Android View Canvas onDraw 未执行

    我目前正在开发一个自定义视图 它在画布上绘制一些图块 这些图块是从多个文件加载的 并将在需要时加载 它们将由 AsyncTask 加载 如果它们已经加载 它们只会被绘制在画布上 这工作正常 如果加载了这些图片 AsyncTask 就会触发v
  • 抛出 Java 异常时是否会生成堆栈跟踪?

    这是假设我们不调用 printstacktrace 方法 只是抛出和捕获 我们正在考虑这样做是为了解决一些性能瓶颈 不 堆栈跟踪是在构造异常对象时生成的 而不是在抛出异常对象时生成的 Throwable 构造函数调用 fillInStack
  • Java 11 - 将 Spring @PostConstruct 替换为 afterPropertiesSet 或使用 initMethod

    我正在使用 spring 应用程序 有时会使用 PostConstruct用于代码和测试中的设置 看来注释将被排除在外Java 11 https www baeldung com spring postconstruct predestro
  • java'assert'和'if(){}else exit;'之间的区别

    java和java有什么区别assert and if else exit 我可以用吗if else exit代替assert 也许有点谷歌 您应该记住的主要事情是 if else 语句应该用于程序流程控制 而assert 关键字应该仅用于

随机推荐

  • sqlite sqlitecommand ExecuteNonQuery 与 ExecuteNonQueryAsync C#

    我正在使用 c sqlite 版本 3 我的应用程序需要在 4000Hz 下保存最多 20 列数据 为了实现这一目标 我使用线程从队列中获取命令并定期写入 读取数据库 目前 我正在编写部分 发现 ExecuteNonQueryAsync 和
  • 在 Active Directory 中找不到锁定属性 (C#)

    首先 我知道有很多关于这个主题的帖子 但是我找到的所有信息对我的情况没有帮助 发生的情况是我找不到用于锁定 AD 中用户的属性 我用过 链接文本 http www codeproject com KB system everythingIn
  • 如何在WPF中向后播放视频?

    我想在 WPF 中向后流畅地播放视频 我在用MediaElement播放视频 我读这个帖子 https stackoverflow com questions 10880331 media element rewind这表明改变MediaE
  • C# 中的 ANSI、SHIFT JIS 与 UTF-8

    我已经尝试找出差异有一段时间了 问题在于 ANSI 编码的文件包含日语字符 例如 1 INCREMENTs K v 它在shift jis中的等价物是少 1 INCREMENT行 必要 预计将是日文的 我需要在从网页上的文件 ANSI 格式
  • 计算每天两个日期时间字段之间的平均时间差

    我有一个出租车数据库 其中包含两个日期时间字段 BookedDateTime 和 PickupDateTime 客户需要知道从预订出租车到司机实际 接 客户的平均等待时间 数据库中有一堆行 涵盖了几个月的数据 目标是设计一个查询来显示每日平
  • org.glassfish.embedded”存储库在哪里?

    我想用
  • Swift 的 pow() 函数不接受双精度数作为参数

    我创建了这个infix operator 作为使用的替代pow功能 infix operator associativity left precedence 155 func
  • 如何保护 Rails 应用免受 Firesheep 的侵害?

    我还没有找到一个简单的指南来保护 Ruby on Rails 应用程序免受攻击火羊 http codebutler com firesheep 如果您不知道 如果您的应用程序不强制使用 SSL 并在 cookie 中设置安全标志 Fires
  • CSS 边框图像在 Chrome 中不起作用

    我用过CSSborder image在菜单栏中达到一定的效果 它在 Firefox 中运行良好 但在 Chrome 中不起作用 See www imptools com http www imptools com chrome 有什么解决办
  • Asp.net core 2.0 AutoMapper IValueResolver 依赖注入

    我已经尝试过 Google Results Stackoverflow 和 AutoMapper 中的大部分示例 但无法让 IValueResolverdependancy 注入工作 我有以下服务 public class StorageS
  • 使用 OAuth 访问令牌提取 Gmail 用户名

    我正在使用 OAuth 让用户授予我访问其 Gmail IMAP 帐户的权限 我可以成功获取访问令牌 并且需要知道可以访问哪个端点来获取经过身份验证的用户的电子邮件地址 您可以使用 Google 测试此 FeedOAuth 游乐场 http
  • taphold jQuery Mobile 1.1.1 后触发的 tap 事件

    我正在使用与 jQuery Mobile 1 1 1 捆绑在一起的 Phonegap 开发一个 iOS 应用程序 我的页面上有一个 div 正在监听 tap 和 taphold 事件 我面临的问题是 一旦我抬起手指 tap 事件就会在 ta
  • 通过代码更改PrintDialog中的打印机名称

    我试图通过代码更改 PrintDialog 的选定打印机 我正在创建一个需要打印的图像 但图像的大小决定了应使用哪台打印机 我有我想要使用的打印机的名称 但我只是不知道在哪里更改该值 任何帮助都可以是 VB NET 或 C 形式 Thank
  • 在 Netezza 中向日期添加天数

    我有一个查询 从 10 1 2017 和 10 31 2017 之间的字段 DATE 中提取日期 我想在标准之间的结束日期添加天数 2017 年 10 月 31 日 这似乎是不可能的 我可以使用 ADD MONTHS 完美地添加月份 但似乎
  • Pandas 模糊检测重复项

    如何在 pandas 中使用模糊匹配来检测重复行 有效 如何在没有将 row i 转换为 String 然后将其与所有其他列进行比较的巨大 for 循环的情况下查找一列与所有其他列的重复项 不是 pandas 特有的 而是在 python
  • Maven 3 测试依赖的传递依赖被标记为编译,为什么?

    我在我的 Maven 3 0 5 JDK 1 7 构建中观察到一个奇怪的行为 在我发现的依赖树中TEST 具有传递性的资源COMPILE依赖关系 参见下面第 1 节 这会在随后的构建阶段中触发maven jira 插件 4 2 20将这些资
  • 通过 localhost 使用 codeigniter 库发送电子邮件

    public function sendemail config Array protocol gt smtp smtp host gt ssl smtp googlemail com smtp port gt 465 smtp user
  • Keras flow_from_directory 类索引

    我曾经手动制作它 但现在我使用 flow from directory 用我自己的数据训练我的网络 我只有一个问题 当我进行 model predict 时 我如何知道我的预测索引 0 是针对标签类别狗 而索引 1 是针对类别猫 我正在使用
  • 如何在 Streamlit 中使标题和图像居中?

    我已经尝试过下面的标题命令 但失败了 对于图像 我只是通过增加尺寸使其居中 使其填充整个页面 有什么论据吗st title and st image这让我可以将它们居中 title alignment st markdown title a
  • 在 Java 中是否可以让构造函数返回类的另一个实例,而不是构造/返回自身?

    Java中是否可以有一个构造函数返回another类的实例 而不是构造 返回自身 有点像 public class Container private static Container cachedContainer new Contain