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