在Java中将类限制为一定数量的对象
我想问一下,是否有一种方法可以限制某个类生成超过一定数量的实例。当您尝试创建另一个实例(比如代码中的一个错误)时,或者在这些行中做一些事情时,是否可以让编译器(“Eclipse”)在该行下面划线在Java中将类限制为一定数量的对象,java,class,instances,Java,Class,Instances,我想问一下,是否有一种方法可以限制某个类生成超过一定数量的实例。当您尝试创建另一个实例(比如代码中的一个错误)时,或者在这些行中做一些事情时,是否可以让编译器(“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;
}
}
谢谢,我确信我做对了,我在类本身中创建对象,但是由于私有构造函数的原因,我不能在类之外创建对象?是的,但是你应该阅读我答案的附录。大多数情况下,这样做不是一个好主意。谢谢,我确信我做对了,我在类本身中创建对象,但由于私有构造函数的原因,我不能在类之外创建对象?是的,但是你应该阅读我答案的附录。大多数时候,这样做不是一个好主意。