1、無傳回值V1版本
/** * Java8 簡潔的匿名內部類使用Demo * Created by wangyingjie1 on 2017/2/23. */public class ExecuteHelper { public static void execute(Execute execute) { execute.doExecute(); } public static void execute(Execute execute, String umpKey) { System.out.println("start========" + umpKey); try { execute.doExecute(); } catch (Exception e) { System.out.println("umpKey===>" + umpKey); } System.out.println("end========" + umpKey); } private interface Execute { void doExecute(); } //測試匿名內部類的使用方式 public static void main(String[] args) { ExecuteHelper.execute(() -> Study.print()); ExecuteHelper.execute(() -> Study.print(), "xxx"); //測試數組的輸出 String[] profiles = {"xxx", "yyyyy", "zzzzzzzzzzzz"}; String profilesStr = Arrays.stream(profiles).reduce((a, b) -> a + ", " + b).get(); System.out.println(profilesStr + "=======\n" + Arrays.toString(profiles)); } public static class Study { public static void print() { System.out.println("Hello world*******"); } }}
2、帶有傳回值V2版本
/** * Java8 簡潔的匿名內部類使用Demo * Created by wangyingjie1 on 2017/2/23. */public class ExecuteHelper { public static void execute(Execute execute) { execute.doExecute(); } /** * 帶有傳回值得執行方法、可以實現代碼的靜態織入 * @param execute * @param umpKey * @param <T> * @return */ public static <T> T execute(Execute execute, String umpKey) { System.out.println("start========" + umpKey); try { return (T)execute.doExecute(); } catch (Exception e) { System.out.println("umpKey===>" + umpKey); } System.out.println("end========" + umpKey); return null; } private interface Execute { Object doExecute(); } //測試匿名內部類的使用方式 public static void main(String[] args) { ExecuteHelper.execute(() -> Study.print()); String xxx = ExecuteHelper.execute(() -> Study.print(), "xxx"); String execute = ExecuteHelper.execute(() -> Study.sayHello("zhangsan"), "zzz"); System.out.println(xxx + "==========" + execute); } public static class Study { public static String print() { System.out.println("Hello world*******"); return "中國"; } public static String sayHello(String userName) { System.out.println("say Hello *******" + userName); return "龍的傳人"; } }}