初始化匿名函数

Java中的内部类实例初始化匿名函数(JLS7 8.6:Instance Initializers)

放肆的年华 提交于 2020-03-02 15:24:25
偶尔发现了一段好玩的java代码,关于Java内部类的,觉得很有意思,但是想不明白这段代码是java语法的特性哪?还是别的什么。最后发现还是对java了解的不够深啊。先上代码: import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<String> lst = new ArrayList<String>() { @Override public boolean add(String paramE) { return super.add("LST-" + paramE); } { add("a"); add("45"); add("a"); add("asdfs"); } }; for (String str : lst) { System.out.println(str); } } } 最后多谢@brayden的解答,查看了JLS定义中的Instance Initializers,了解到这个是Java语法标准。顺便我反编译了一下,生成的代码,下面这段匿名方法最终会编译到这个内部类的构造函数中。 { add("a"); add("45"); add("a"); add("asdfs"); }