当前位置: 首页 > 面试题库 >

公共静态工厂方法

乜元魁
2023-03-14
问题内容

首先,如果这是一个非常愚蠢的问题,请原谅我,我只是想学习这种语言的核心。我正在阅读《有效的Java》,并且第一章讨论了静态工厂方法与构造方法。他们的利弊。令我困惑的几件事是:

  1. 静态工厂方法返回的对象的类是非公共的 -究竟是什么意思?
  2. 与构造函数不同,每次调用静态工厂方法都不需要创建新对象 -这是怎么发生的?我仅调用工厂方法来获取新对象,是否将检查方法放入工厂方法中以检查对象是否已存在?

谢谢。


问题答案:

静态工厂方法返回的对象的类是非公共的-究竟是什么意思?

这意味着静态工厂方法返回的对象的实际类可以是声明类型的子类,并且此子类不必是公共的。这只是客户端代码不关心的另一个实现细节。

与构造函数不同,在每次调用它们时>都不需要静态工厂方法来创建新对象-
这是怎么发生的?我仅调用工厂方法来获取新对象,是否将检查方法放入工厂方法中以检查对象是否已存在?

是的,这是可以完成的一种方式。但实际上,一切皆有可能。



 类似资料:
  • 我有一个关于静态方法访问的问题。我有一个类,其中有4个静态方法。如代码所示: } 我正在从下面的代码调用来自onLoadShipperDetailsListCtrl()的setSortingEnable()方法: } 因此,如果我从其他类调用setSortingEnabled()方法,我会认为它是公共的,而其他方法是私有的,但它会给我一个错误:Java . lang . nosuchmethode

  • 问题内容: 和之间有什么区别? 例如 : 要么 问题答案: 尽管您 确实 希望遵守约定,但在功能上没有什么区别(字节码将 完全相同 ),请访问JLS-8.3.1。场修饰符: __ 这将是奇怪的,看.. 我也建议您访问checkstyle。 编辑: 从同一页面链接到该部分: http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls

  • 问题内容: 我的应用程序有一个问题,当我登录时,该应用程序崩溃并且出现错误: 我试图弄乱gradle并更改变量。这个问题似乎源于此软件包: 然后,它还引用了以下内容: 这是我的摇篮 关于如何找到纠正错误的方法有任何想法吗? 问题答案: 尝试切换到Java 8兼容性,以对某些库进行适当的除糖处理: 此外,Google JSON API可能更需要。

  • 在Java中是否有一个静态工厂方法来创建队列? 或 但无法找到对队列(或出队列)进行同样操作的方便方法。我找到的唯一解决办法是:

  • 若需要在 San CLI UI内建的http服务器上暴露一些静态文件,例如:为自定义视图指定图标。可以通过在插件包根目录里可选的放置一个public文件夹,这个文件夹里的任何文件都会暴露至 /_plugin/:id/* 的http路由。 例如,如果将 x-logo.png 文件放置到 san-cli-ui-widget-x/public/ 文件夹,那么 cli-ui 加载插件的时候可以通过 /_p