[英]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.