gpt4 book ai didi

java - 双括号初始化和 "kind of"静态匿名类

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:49:57 24 4
gpt4 key购买 nike

有时为了测试,我使用快速“双括号”初始化,它在 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");
// ...
}
};
}

sSet1sSet2 都是用匿名嵌套类初始化的,这些类不保留对 Outer 类的引用。

这是否意味着这些匿名类本质上是静态嵌套类?

最佳答案

正如在您所引用的相关问题中所讨论的那样,匿名类在技术上不能是静态的,但如果它是在静态上下文中声明的,则可以称为有效静态,就是这样没有引用外部实例。

但是,在您的情况下,两种方法之间绝对没有区别,静态字段的初始化也是静态上下文。

关于java - 双括号初始化和 "kind of"静态匿名类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20597966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com