在时间和内存消耗方面,编写包含 ArrayList 的简单 pojo 类的最正确和/或最有效的方法是什么? (关于引用的 java 机制,通过 ref' 传递,赋值等):
public class MyClass {
//1. Do we need to initialize here?
public List<String> mList = new ArrayList<>();
//2. Do we need to declare D. Constructor?
public MyClass() {}
//3. Need to initialize the list here or just pass?
public MyClass(List<String> list) {
this.mList = list;
}
//4. Better way for copy/assignment?
public void setMlist(List<String> list) {
this.mList = list;
}
public List<String> getMList() {
return this.mList;
}
}
最佳答案
- Do we need to initialize here?
不,只有在你需要的时候才初始化它。如果有可能在未初始化的情况下使用它,请务必检查 null。
- Do we need to declare D. Constructor?
如果你什么都不做,我真的不明白拥有它的意义。请注意,有些人更喜欢仍然声明它在其中写评论并指示它不应该做任何事情:
public MyClass(){
//NOP
}
参见 NOP .这不会改变与内存使用相关的任何内容。但是从逻辑上讲,默认构造函数应该初始化列表而不是在开始时初始化它。所以我们有两个选择,我们传递一个已经存在的(使用参数化构造函数)或者我们使用默认构造函数并创建一个空列表。
- Need to initialize the list here or just pass?
只是通过,否则接收它作为参数有什么意义?如果您对其进行初始化并重新分配,那将毫无意义。您可能需要检查接收到的是否为空,否则对其进行初始化。
- Better way for copy/assignment?
如果你真的想制作副本,你可能需要检查Collections#copy
.然而,这不是 setter 的重点,你在这里所做的是正确的。
关于Java:用ArrayList写pojo最高效的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32525124/