Java 下面的片段中发生了什么?

Java 下面的片段中发生了什么?,java,Java,我无法理解下面的snipet。我是说到底发生了什么。有人能解释一下发生了什么事吗 以下是代码片段: protected NodeService getUnprotectedNodeService() { if (this.unprotectedNodeService == null) { this.unprotectedNodeService = (NodeService) FacesHelper.getManagedBean(Fac

我无法理解下面的snipet。我是说到底发生了什么。有人能解释一下发生了什么事吗

以下是代码片段:

protected NodeService getUnprotectedNodeService()

   { 

      if (this.unprotectedNodeService == null)
          {
         this.unprotectedNodeService = (NodeService) FacesHelper.getManagedBean(FacesContext.getCurrentInstance(), "nodeService");
      }
      return this.unprotectedNodeService;
   }

它设置
this.unprotectedNodeService
,如果它尚未设置(并返回它),如果它已经设置,则只返回它。

似乎是一种缓存机制,可以防止多次调用重载方法。它设置
此项。如果尚未设置(并返回它),则未保护的NodeService
,如果已设置,则仅返回它。

似乎是一种缓存机制,用于防止多次调用重方法。如果未设置
unprotectedNodeService
实例变量,它将查找存储在“
nodeService
”键下范围内的
ManagedBean
。如果它不存在,它将被创建。它被强制转换为一个
NodeService
对象并返回,同时被设置为实例变量。这必须来自JSF应用程序。查看
faces config.xml
或相关的
@ManagedBean
注释以查找更多信息。

如果未设置
unprotectedNodeService
实例变量,它将查找存储在“
nodeService
”键下范围内的
ManagedBean
。如果它不存在,它将被创建。它被强制转换为一个
NodeService
对象并返回,同时被设置为实例变量。这必须来自JSF应用程序。查看
faces config.xml
或相关的
@ManagedBean
注释以查找更多信息。

  • 如果
    此.unprotectedNodeService
    为 null,则查找一个bean并 储存在
    这是一个不受保护的节点服务
  • 此.unprotectedNodeService
    从函数返回
这是一个例子。

  • 如果
    此.unprotectedNodeService
    为 null,则查找一个bean并 储存在
    这是一个不受保护的节点服务
  • 此.unprotectedNodeService
    从函数返回
这是一个示例。

这是惰性初始化模式

字段
unprotectedNodeService
在首次使用时(而不是之前)初始化

请注意,此代码不是线程安全的。

这是延迟初始化模式

字段
unprotectedNodeService
在首次使用时(而不是之前)初始化


请注意,此代码不是线程安全的。

实际上,它以任何方式返回
this.unprotectedNodeService
case@MarcoS:我忘了在答案的第一个“版本”上写它,但是我立即编辑了它…看看编辑过的答案。抱歉:我一定看到了你答案的第一个版本:)实际上它返回了
这个。未受保护的nodeservice
case@MarcoS:我忘了在答案的第一个“版本”上写它,但是我立即编辑了它…看编辑后的答案。对不起:我一定看到了你答案的第一个版本:)