繁体   English   中英

如何在Java中为成员arraylist变量实现延迟初始化?

[英]How do I implement lazy initialization for a member arraylist variable in Java?

我有一个private List<String> children;类的类private List<String> children; 它当前在构造函数中初始化,但并不总是需要这个,我只想在其他函数需要它时才初始化它。

重点是在不改变代码的情况下重做当前的实现。

我知道如何用其他语言来做,但到目前为止,Java知识非常有限。

要拼写出来,这是实现它的一种方法:

public class Whatever 
{
    private List<String> children;

    public List<String> getChildren
    {
        if ( children == null ) { children = new ArrayList<String>(); }
        return children;
    }
    ...
}

另外,记得写例如。 addChild( String child )的条款get的“er而不是直接访问的领域。 如果你真的很偏执和/或在线程环境中并且创建需要很长时间,你可能想要使块synchronized

如果children为null,则可以在getter中创建它。 注意适当的同步。 如果children创建成本不高,而且你不会创建大量的实例,那就急着做。 节省您的麻烦。

在访问器方法背后的数据传输对象的java隐藏成员变量,臭名昭着的java bean的getter和setter中,这是一种常见的做法。 如果你这样做,你可以在`List getChildren()方法中添加你想要的任何逻辑(在第一次调用时创建列表,将可重写列表返回到外部客户端等)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM