我有一些这样的代码:
public abstract class Foo {
public static Foo getFoo() {
return new FooImpl();
}
abstract void DoFoo();
private class FooImpl extends Foo {
public FooImpl() { }
@Override
void DoFoo() { }
}
}
但是Eclipse告诉我
No enclosing instance of type Foo is accessible.
那么如何使它起作用?我试图使其尽可能简单,以查看其是否可以编译:
public abstract class Foo {
public static Foo getFoo() {
return new FooImpl();
}
private static class FooImpl extends Foo {
public FooImpl() { }
}
}
而且我仍然遇到相同的错误。我想念什么?
固定!我将
return new FooImpl();
行更改为return new Foo.FooImpl();
最佳答案
很好的解释here-简而言之,您需要创建FooImpl
类static
,因此它仅与外部类相关联,而与外部类的特定实例(您没有)相关。 getFoo
方法看起来也应该是静态的,顺便说一句-否则,您打算调用哪个Foo
实例?