Java 无法访问ITask类型的封闭实例。
我想让具有多个内部类的抽象类对其进行扩展,并可以通过静态方法创建其内部类的实例,但我得到编译器错误“无法访问ITask类型的封闭实例。必须使用ITask类型的封闭实例限定分配(例如,x.new A(),其中x是ITask的实例)。” 我认为内部类应该由外部类的实例创建,但我的外部类有抽象方法,我不能创建它的实例。我创建了扩展父类的内部类,因为我不想控制它们的创建。 那么有没有办法让我的模式工作呢 我的代码:Java 无法访问ITask类型的封闭实例。,java,Java,我想让具有多个内部类的抽象类对其进行扩展,并可以通过静态方法创建其内部类的实例,但我得到编译器错误“无法访问ITask类型的封闭实例。必须使用ITask类型的封闭实例限定分配(例如,x.new A(),其中x是ITask的实例)。” 我认为内部类应该由外部类的实例创建,但我的外部类有抽象方法,我不能创建它的实例。我创建了扩展父类的内部类,因为我不想控制它们的创建。 那么有没有办法让我的模式工作呢 我的代码: public abstract class ITask { public abstrac
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...
}
}
问题在于创建(.*)任务的方法
谢谢 如果内部类是从静态方法创建的,那么它们应该是静态的,因此不需要访问封闭的ITask
您还应该遵守Java命名约定:方法以小写字母开头。在Java中,静态类是什么意思?它将如何定位在内存中?有可能在这样的类中有成员吗?静态内部类与常规的顶级类类似,只是它们的名称是EnclosuringClass.InnerClass。阅读并查看可能的副本