Я бы хотел, чтобы абстрактный класс, который имеет несколько внутренних классов, расширяет его и может создавать экземпляры его внутренних классов с помощью статических методов, но я получаю ошибку компилятора «Нет доступного экземпляра типа ITask. Должен квалифицировать выделение с помощью экземпляра окружения типа ITask (например, xnew A(), где x является экземпляром ITask). "Нет доступного экземпляра типа 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...
}
}
Проблема с методами создания задачи (*.).
Спасибо!
См. Http://stackoverflow.com/questions/7901941/no-enclosing-instance-of-type-server-is-accessible – Raedwald
Возможный дубликат [Java - нет экземпляра экземпляра типа Foo доступен] (http: //stackoverflow.com/questions/9560600/java-no-enclosing-instance-of-type-foo-is-accessible) – fabian