不能访问类型为ITask的封闭实例。

时间:2012-06-15 05:25:56

标签: java

我想创建一个抽象类,它有几个内部类扩展它,并且可以通过静态方法创建其内部类的实例但是我得到编译器错误“没有封闭的ITask类型的实例是可访问的。必须用封闭来限定分配ITask类型的实例(egxnew A(),其中x是ITask的一个实例)。“

found out内部类应该由外部类的实例创建,但我的外部类有抽象方法,我不能创建它的实例。我创建了扩展父类的内部类,因为我不会控制它们的创建。 那么如何使我的模式有效。

我的代码:

public abstract class ITask {
public abstract void Execute(Subscriber itm);

static public ITask CreateSendTask(Buffer buffer)
{
    return new SendData(buffer);
}

static public ITask CreateSTTask(Ticket sid)
{
    return new StartTransmission(sid);
}

static public ITask CreateETTask(Ticket sid)
{
    return new EndTransmission(sid);
}


private class SendData extends ITask
{
         /// some implemetation...
}

private class StartTransmission extends ITask
{
         /// some implemetation...
}

private class EndTransmission extends ITask
{
    /// some implemetation...
}

}

问题在于方法Create(。*)Task。

谢谢!

1 个答案:

答案 0 :(得分:3)

如果内部类是从静态方法创建的,那么它们应该是静态的,因此不需要访问封闭的ITask。

您还应该尊重Java命名约定:方法以小写字母开头。