いくつかのクラスが別のクラスにネストされています
public abstract class I
{
public abstract int f();
}
public class J
{
private List<I> li;
public J(List<I> l)
{
li = l;
}
}
public class A // first class
{
private int x; // field of A
public class B extends J // second class
{
public B()
{
super(new ArrayList<I>() // super call
{{ // array initializer
add(new I() // third class
{
@Override
public int f()
{
return x; // <- here!!!
}
});
}});
}
}
}
これらの条件下では、「エラー: タイプ A の囲んでいるインスタンスがスコープ内にありません」というエラーが表示されます。このセットアップから要素を削除すると、このエラーが修正されます。また、 x を取得して別の変数に保存し、その変数を使用することもできます。
ここで何が起きてるの?私にとっては、コンパイラのバグのようです。