什么是双大括号初始化语法({{…}})在Java?


当前回答

这似乎与flash和vbscript中流行的with关键字相同。这是一种改变事物的方法,仅此而已。

其他回答

我认为有必要强调的是,在Java中没有“双大括号初始化”这样的东西。甲骨文网站没有这个术语。在这个例子中,有两个特性一起使用:匿名类和初始化程序块。开发人员似乎已经忘记了旧的初始化程序块,并在这个主题中引起了一些混乱。引用自Oracle文档:

实例变量的初始化块看起来就像静态初始化块,但是没有static关键字:

{
    // whatever code is needed for initialization goes here
}

你是说像这样的事?

List<String> blah = new ArrayList<String>(){{add("asdfa");add("bbb");}};

这是在创建时初始化数组列表(hack)

关于双大括号初始化的有趣应用,请参阅这里的Dwemthy 's Array in Java。

摘录

private static class IndustrialRaverMonkey
  extends Creature.Base {{
    life = 46;
    strength = 35;
    charisma = 91;
    weapon = 2;
  }}

private static class DwarvenAngel
  extends Creature.Base {{
    life = 540;
    strength = 6;
    charisma = 144;
    weapon = 50;
  }}

现在,准备好迎接香肠味和培根味的大战吧!

在其他用途中,它是初始化集合的快捷方式。了解更多…

这似乎与flash和vbscript中流行的with关键字相同。这是一种改变事物的方法,仅此而已。