Java 8 新特性1-函數式接口
Java 8 新特性1-函數式接口
(原)
Lambda表達式基本結構:
(param1,param2,param3) -> {代碼塊}
例1:
package com.demo.jdk8; import java.util.Arrays; import java.util.List; import java.util.function.Consumer; public class Test2 { public static void main(String[] args) { for_test(); for_newMethod(); for_lambda(); } public static void for_test(){ List<Integer> list = Arrays.asList(1,2,3,4,5,6); for(Integer i : list){ System.out.println(i); } } public static void for_newMethod(){ List<Integer> list = Arrays.asList(1,2,3,4,5,6); list.forEach(new Consumer<Integer>() { @Override public void accept(Integer t) { System.out.println(t); } }); } public static void for_lambda(){ List<Integer> list = Arrays.asList(1,2,3,4,5,6); list.forEach(i -> System.out.println(i)); } }
這三個方法最後執行後的結果都一樣
在for_newMethod方法中,可以看到list新增了一個新方法,forEach,可以叠代裏面的元素,它的參數是一個consumer接口。
Consumer接口在java.util.function包下,該包是java8新引入的工具包,[email protected] /* * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package java.lang; import java.lang.annotation.*; /** * An informative annotation type used to indicate that an interface * type declaration is intended to be a <i>functional interface</i> as * defined by the Java Language Specification. *這是一個通知性的註解類型,用於去表示某一個接口聲明,它指在規定一個函數式接口, *這個接口由JAVA語言規範去定義的。([email protected]