[英]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.