有时候为了测试,我会使用快速“双括号”初始化方法,在Outer
类中创建匿名嵌套类,例如:
static final Set<String> sSet1 = new HashSet<String>() {
{
add("string1");
add("string2");
// ...
}
};
编辑
我正在纠正之前错误的陈述,即此示例保留对Outer
实例的引用。它不是这样的,它实际上相当于以下内容:
static final Set<String> sSet2;
static {
sSet2 = new HashSet<String>() {
{
add("string1");
add("string2");
// ...
}
};
}
两个变量sSet1
和sSet2
都使用匿名嵌套类初始化,这些类没有保留对Outer
类的引用。
这是否意味着这些匿名类实质上是静态嵌套
类?
Outer.this
的隐式引用。 - kiruwkaOuter.this.someMethod()
。如果不能编译,那就得重新思考我的逻辑了。 - Sotirios Delimanolis