Java 实例的输出ID

Java 实例的输出ID,java,static,instantiation,Java,Static,Instantiation,我想创建一个类的5个实例,但不多(第6次实例化时出现错误消息)。我还希望能够以自定义顺序调用每个对象字段(本例中为id),因此我需要这些对象的引用变量,而我不需要这些变量,因为我的getInstance()必须是静态方法。如何输出每个对象的id(例如,以创建它们的相反顺序)。希望这是有意义的,如果不只是告诉我你通常会怎么做这种事情 public class JustFive { private static int i=0; private int id; public

我想创建一个类的5个实例,但不多(第6次实例化时出现错误消息)。我还希望能够以自定义顺序调用每个对象字段(本例中为id),因此我需要这些对象的引用变量,而我不需要这些变量,因为我的getInstance()必须是静态方法。如何输出每个对象的id(例如,以创建它们的相反顺序)。希望这是有意义的,如果不只是告诉我你通常会怎么做这种事情

public class JustFive {
    private static int i=0;
    private int id;
    public JustFive(int n){
        this.id=n;
    }
    public static void main(String[] args) throws Exception {
         getInstance();
         getInstance();
         getInstance();
         getInstance();
         getInstance();
    }
    private static JustFive getInstance() throws Exception{
        if(i<5) {
            i++;
            System.out.println(i+" instance created ");
            return new JustFive(i*1000);
        } else
            throw new Exception("Can't create more than 5 instances of this class");
    }
    private int getId(){
        return this.id;
    }
}
公共类只有五个{
私有静态int i=0;
私有int-id;
公共区域(国际北){
这个。id=n;
}
公共静态void main(字符串[]args)引发异常{
getInstance();
getInstance();
getInstance();
getInstance();
getInstance();
}
私有静态JustFive getInstance()引发异常{

如果(i创建了五个
实例,只创建了五个
实例,将它们放入
列表
,然后使用
比较器
id
降序排序

public static void main(String[] args) throws Exception {
    List<JustFive> jfs = Arrays.asList(getInstance(), getInstance(), getInstance(), getInstance(), getInstance());
    Collections.sort(jfs, new Comparator<JustFive>(){
        @Override
        public int compare(JustFive o1, JustFive o2) {
            return -1 * new Integer(o1.id).compareTo(o2.getId());
        }
    });
    for (JustFive justFive : jfs) {
        System.out.println(justFive.getId());
    }
}
import java.util.List;
公共静态void main(字符串[]args)引发异常{
List elems=new ArrayList();
对于(int i=0;i<5;i++){
添加(getInstance());
}
//按相反顺序打印
对于(int i=elems.size()-1;i>=0;i--){
System.out.println(elems.get(i.getId());
}
}

这是可行的。但是我如何才能只获取第三个实例的私有id呢?
1 instance created 
2 instance created 
3 instance created 
4 instance created 
5 instance created 
5000
4000
3000
2000
1000
import java.util.List;

public static void main(String[] args) throws Exception {
     List<JustFive> elems = new ArrayList<>();
     for (int i = 0; i < 5; i++) { 
         elems.add(getInstance());
     }
     // print in reverse order
     for (int i = elems.size() - 1; i >= 0; i--) { 
         System.out.println(elems.get(i).getId());
     }
}