这是一个很好的java实践(就内存和计算效率而言)在类本身中关联静态对象列表。
package collection;
/**
* Created by ANJANEY on 5/28/2014.
*/
import java.util.*;
class Student1
{
int rollId;
String name;
static List<Student1> studentList=new ArrayList<Student1>();
Student1(int rollId,String name)
{
this.rollId=rollId;
this.name=name;
studentList.add(this);
}
}
public class A {
public static void main(String aaaa[])
{
new Student1(1,"Anjaney");
new Student1(2,"Prerak");
Iterator<Student1> itr=Student1.studentList.iterator();
while(itr.hasNext())
{
Student1 st=itr.next();
System.out.println("Roll = "+st.rollId+" Name = "+st.name);
}
}
}
答案 0 :(得分:3)
您在此处实施的内容称为“实例控制”类(请参阅Effective Java - Joshua Bloch第2章 - 第I项)。
通常开发人员使用静态工厂实现实例控制的类,您可以保持对创建的对象的引用(就像您使用该List一样)以及执行其他操作,例如限制实例数。一个着名的“实例控制”类的私人案例叫做Singleton(虽然在这种情况下保留一个列表没有意义......)。
从性能角度来看,我没有看到将列表保留在类内或类外的任何有意义的收益/损失。
答案 1 :(得分:0)
由于列表是静态的,因此无论如何只能为单个类初始化一次,因此在类外声明列表(例如在main方法中)不会产生太大的区别,因为即使在那里它只会被初始化一次。但是声明类中的列表并初始化它(使用构造函数或getter / setter),肯定会更好地控制列表对象的访问。