[英]What's wrong with my factory?
我有一些像这样的代码:
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();
这里有 FooImpl
解释 - 简而言之,你需要使类FooImpl
static
,所以它只与外部类相关联,而不是外部类的特定实例 (你没有)。 该getFoo
方法也看起来应该是静态的,顺便说一句-否则,什么情况下的Foo
是你在调用它的规划?
你打算怎么打电话给getFoo()
?
除非你做的事情完全是时髦和激进的,否则你需要让它变得static
。
使FooImpl
类static
,它将工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.