我想创建一个类的最多五个对象。如果创建了多个对象,它将抛出异常。请帮忙。
答案 0 :(得分:5)
创建一个静态工厂方法,用于跟踪创建的实例。
使用私有构造函数,用户必须使用工厂方法,如果已经创建了超过5个对象,则可以抛出异常。
答案 1 :(得分:3)
做这样的事情:
public class VeryOddClass
{
private static final Object lock = new Object();
private static int s_count;
static
{
s_count = 5; /*ToDo - read from configuration*/
}
public VeryOddClass()
{
synchronize(lock){
if (s_count <= 0) throw new VeryOddClassException();
--s_count;
}
/*normality resumes from here*/
但请重新考虑您的设计要求。
答案 2 :(得分:2)
我认为这是解决这类问题的方法。我们需要私有静态计数器,一旦达到期望限制,就抛出异常。
class Program
{
private static int instanceCount;
public Program()
{
if (instanceCount > 5)
throw new InvalidOperationException("Only 5 instances of Program are allowed");
instanceCount++;
}
public static void main(String[] args)
{
for (int n = 0; n < 10; n++)
new Program();
}
}
答案 3 :(得分:0)
创建一个静态私有字段并在构造函数中递增它。另外,检查那里的计数。通过TheClassname.field ++或其他东西增加它,并通过TheClassname.field == 5
检查答案 4 :(得分:0)
通过工厂实例化您的课程,并使用简单的计数器将其限制为5个实例。或者使用修改过的Singleton: OOPS (Design Patterns)