1

我想让具有多个内部类的抽象类对其进行扩展,并可以通过静态方法创建其内部类的实例,但我收到编译器错误“无法访问 ITask 类型的封闭实例。必须使用封闭类型的实例来限定分配ITask(例如 xnew A(),其中 x 是 ITask 的一个实例)。”

发现内部类应该由外部类的实例创建,但我的外部类有抽象方法,我无法创建它的实例。我制作了扩展父级的内部类,因为我不会控制它们的创建。那么有什么方法可以使我的模式起作用。

我的代码:

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 方法上。

谢谢!

4

1 回答 1

3

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

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

于 2012-06-15T05:41:05.003 回答