Java 无法访问ITask类型的封闭实例。

Java 无法访问ITask类型的封闭实例。,java,Java,我想让具有多个内部类的抽象类对其进行扩展,并可以通过静态方法创建其内部类的实例,但我得到编译器错误“无法访问ITask类型的封闭实例。必须使用ITask类型的封闭实例限定分配(例如,x.new A(),其中x是ITask的实例)。” 我认为内部类应该由外部类的实例创建,但我的外部类有抽象方法,我不能创建它的实例。我创建了扩展父类的内部类,因为我不想控制它们的创建。 那么有没有办法让我的模式工作呢 我的代码: public abstract class ITask { public abstrac

我想让具有多个内部类的抽象类对其进行扩展,并可以通过静态方法创建其内部类的实例,但我得到编译器错误“无法访问ITask类型的封闭实例。必须使用ITask类型的封闭实例限定分配(例如,x.new 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...
}
}

问题在于创建(.*)任务的方法


谢谢

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


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

在Java中,静态类是什么意思?它将如何定位在内存中?有可能在这样的类中有成员吗?静态内部类与常规的顶级类类似,只是它们的名称是EnclosuringClass.InnerClass。阅读并查看可能的副本