gpt4 book ai didi

Java 语法糖

转载 作者:搜寻专家 更新时间:2023-10-30 21:01:47 24 4
gpt4 key购买 nike

我今天遇到了这段代码,但我不知道它是如何工作的。我知道如何制作匿名类,但我习惯于看到方法签名而不仅仅是一对大括号。这些大括号之间的代码是否放入静态 block 中?它会进入构造函数吗?还是完全不同?

conext.checking(new Expectations() {
{ // <- what does this pair of braces do?
oneOf(alarm).getAttackAlarm(null);
}
});

最佳答案

它是一个实例初始化器,在创建的对象的上下文中调用代码。

这相当于

Expectations exp = new Expectations();
exp.oneOf(alarm).getAttackAlarm(null);
conext.checking(exp)

编写它的人可能认为他通过不声明变量(不正确)或者它是更清晰的代码(我不同意)来提高效率。

这些初始化器像这样有用的主要地方是在实例化 map 时,即:

Map map = new HashMap() {{
put("key1", "value1");
put("key2", "value2");
}};

我认为这实际上更具可读性。

关于Java 语法糖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3866764/

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