質問
私はこのようないくつかのコードを持っています
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() { }
}
}
そして、私はまだ同じエラーを取得します。私は何をしないのですか?
FIXED!私はreturn new FooImpl();
するラインreturn new Foo.FooImpl();
を変更
解決
エクセレント説明ここを - 簡単に、あなたはクラスFooImpl
のstatic
を作成する必要があります、それだけではない(あなたが持っていない)外部クラスの特定ののインスタンスのために、外部クラスに結び付けられていますので。それは静的である必要があるようgetFoo
法もところで、見えます - それ以外の場合は、どのようなのインスタンスのFoo
のあなたはそれを呼び出すことで計画していた。
他のヒント
どのようにしてgetFoo()
を呼び出すために人々をつもりですか?
static
ようにする必要があります。
FooImpl
クラスstatic
を作成し、それが動作します。
所属していません StackOverflow