这是在类本身中关联静态对象列表的一种良好的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);
}
}
}
最佳答案
您在此处实现的称为“实例控制”类(请参阅有效的Java-Joshua Bloch第2章-项目I)。
通常,开发人员使用静态工厂来实现实例控制的类,您可以保留对已创建对象的引用(就像您使用该List一样),还可以进行其他操作(例如限制实例数)。一个著名的“实例控制”类的私有案例称为Singleton(尽管在这种情况下,没有必要保留列表...)。
从性能的角度来看,将列表保留在类内或类外都不会带来任何有意义的收益/损失。