以下代码段中发生了什么?

时间:2011-06-07 09:30:30

标签: java

我无法理解以下snipet。我的意思是发生了什么。谁能解释我发生了什么?

这是片段:

protected NodeService getUnprotectedNodeService()

   { 

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

4 个答案:

答案 0 :(得分:3)

它设置this.unprotectedNodeService如果它尚未设置(并且还返回它...),如果它已经设置,它只返回它。
看起来像是一种缓存机制,可以防止多次调用重型方法

答案 1 :(得分:1)

  • 如果this.unprotectedNodeService是 null,查找bean并且 存储在 this.unprotectedNodeService
  • this.unprotectedNodeService从函数返回。

这是lazy initialization的一个例子。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

这是延迟初始化模式。字段unprotectedNodeService在首次使用时(而不是之前)初始化。

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