我有一些类相互嵌套
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 并将其保存到另一个变量然后使用该变量也可以。
这里发生了什么?对我来说,这似乎是编译器中的一个错误。