我想使具有多个内部类的抽象类对其进行扩展,并可以通过静态方法创建其内部类的实例,但是我收到编译器错误“无法访问类型为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。

谢谢!

最佳答案

如果内部类是通过静态方法创建的,则应将其设为静态,因此不需要访问封闭的ITask。

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

07-28 04:15