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