限制要实例化的类不超过五次

时间:2014-02-13 15:48:22

标签: java exception object

我想创建一个类的最多五个对象。如果创建了多个对象,它将抛出异常。请帮忙。

5 个答案:

答案 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)