在Java中将类限制为一定数量的对象

在Java中将类限制为一定数量的对象,java,class,instances,Java,Class,Instances,我想问一下,是否有一种方法可以限制某个类生成超过一定数量的实例。当您尝试创建另一个实例(比如代码中的一个错误)时,或者在这些行中做一些事情时,是否可以让编译器(“Eclipse”)在该行下面划线 为了澄清那些会说这是个坏主意的人,我正在下一盘棋,因此,我需要它不能制作超过一定数量的播放片段。您可以简单地创建所需数量的对象,比如在循环中实例化您的类,然后设置一个由构造函数检查的标志,以便在尝试再创建一个时抛出异常。您可以将构造函数设置为私有,并使用静态方法生成实例。您只需创建所需数量的对象,例如在

我想问一下,是否有一种方法可以限制某个类生成超过一定数量的实例。当您尝试创建另一个实例(比如代码中的一个错误)时,或者在这些行中做一些事情时,是否可以让编译器(“Eclipse”)在该行下面划线


为了澄清那些会说这是个坏主意的人,我正在下一盘棋,因此,我需要它不能制作超过一定数量的播放片段。

您可以简单地创建所需数量的对象,比如在循环中实例化您的类,然后设置一个由构造函数检查的标志,以便在尝试再创建一个时抛出异常。您可以将构造函数设置为私有,并使用静态方法生成实例。

您只需创建所需数量的对象,例如在循环中实例化类,然后设置一个由构造函数检查的标志,以便在尝试再创建一个时引发异常。您可以将构造函数设置为私有,并使用静态方法生成实例。

Eclipse不能在编译时这样做,因为它无法判断一段代码将执行多少次,从而也无法判断创建了多少实例

但是您可以设计您的类,使其只创建给定数量的实例,而不可能创建更多的实例。例如:

public class Limited {
    public static final List<Limited> ALL_INSTANCES = 
        Collections.unmodifiableList(createInstances());

    private int id;

    private static List<Limited> createInstances() {
        List<Limited> result = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            result.add(new Limited(i));
        }
    }

    private Limited(int id) {
        this.id = id;
    }
}

Eclipse不能在编译时这样做,因为它无法判断一段代码将执行多少次,从而也无法判断创建了多少实例

但是您可以设计您的类,使其只创建给定数量的实例,而不可能创建更多的实例。例如:

public class Limited {
    public static final List<Limited> ALL_INSTANCES = 
        Collections.unmodifiableList(createInstances());

    private int id;

    private static List<Limited> createInstances() {
        List<Limited> result = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            result.add(new Limited(i));
        }
    }

    private Limited(int id) {
        this.id = id;
    }
}

谢谢,我确信我做对了,我在类本身中创建对象,但是由于私有构造函数的原因,我不能在类之外创建对象?是的,但是你应该阅读我答案的附录。大多数情况下,这样做不是一个好主意。谢谢,我确信我做对了,我在类本身中创建对象,但由于私有构造函数的原因,我不能在类之外创建对象?是的,但是你应该阅读我答案的附录。大多数时候,这样做不是一个好主意。