偶爾發(fā)現(xiàn)了一段好玩的java代碼,關(guān)于Java內(nèi)部類的,覺得很有意思,但是想不明白這段代碼是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("RMB"); add("USD"); add("AUS"); } }; for (String str : lst) { System.out.println(str); } }}多謝@brayden的解答,查看了JL定義中的Instance Initializers,了解到這個(gè)是Java語法標(biāo)準(zhǔn)。順便我反編譯了一下,生成的代碼,下面這段匿名方法最終會編譯到這個(gè)內(nèi)部類的構(gòu)造函數(shù)中。{ add("RMB"); add("USD"); add("AUS");}反編譯后的代碼: Mainimport java.io.PrintStream;import java.util.ArrayList;public class Main{ public static void main(String[] paramArrayOfString) { ArrayList local1 = new ArrayList() { public boolean add(String paramAnonymousString) { return super.add("LST-" + paramAnonymousString); } }; for (String str : local1) System.out.println(str); }}Main$1內(nèi)部類import java.util.ArrayList;final class Main$1 extends ArrayList<String>{ Main$1() { add("a"); add("45"); add("a"); add("asdfs"); } public boolean add(String paramString) { return super.add("LST-" + paramString); }}
有人可以幫我解釋一下這段java內(nèi)部類的代碼嗎
動(dòng)漫人物
2019-03-19 17:14:25