我想创建一个抽象类,它有几个内部类扩展它,并且可以通过静态方法创建其内部类的实例但是我得到编译器错误“没有封闭的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。
谢谢!
答案 0 :(得分:3)
如果内部类是从静态方法创建的,那么它们应该是静态的,因此不需要访问封闭的ITask。
您还应该尊重Java命名约定:方法以小写字母开头。