您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java 8方法引用與構(gòu)造器引用,數(shù)組引用舉例分析”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Java 8方法引用與構(gòu)造器引用,數(shù)組引用舉例分析”吧!
import org.junit.Test;import java.io.PrintStream;import java.util.Comparator;import java.util.function.BiFunction;import java.util.function.BiPredicate;import java.util.function.Consumer;import java.util.function.Function;import java.util.function.Supplier;/* * 一、方法引用:若 Lambda 體中的功能,已經(jīng)有方法提供了實(shí)現(xiàn),可以使用方法引用 * (可以將方法引用理解為 Lambda 表達(dá)式的另外一種表現(xiàn)形式) * * 1. 對(duì)象的引用 :: 實(shí)例方法名 * * 2. 類(lèi)名 :: 靜態(tài)方法名 * * 3. 類(lèi)名 :: 實(shí)例方法名 * * 注意: * ①方法引用所引用的方法的參數(shù)列表與返回值類(lèi)型,需要與函數(shù)式接口中抽象方法的參數(shù)列表和返回值類(lèi)型保持一致! * ②若Lambda 的參數(shù)列表的第一個(gè)參數(shù),是實(shí)例方法的調(diào)用者,第二個(gè)參數(shù)(或無(wú)參)是實(shí)例方法的參數(shù)時(shí),格式: ClassName::MethodName * * 二、構(gòu)造器引用 :構(gòu)造器的參數(shù)列表,需要與函數(shù)式接口中參數(shù)列表保持一致! * * 1. 類(lèi)名 :: new * * 三、數(shù)組引用 * * 類(lèi)型[] :: new; * * */public class TestMethodRef { //數(shù)組引用 @Test public void test8(){ Function<Integer, String[]> fun = (args) -> new String[args]; String[] strs = fun.apply(10); System.out.println(strs.length); System.out.println("--------------------------"); Function<Integer, Employee[]> fun2 = Employee[] :: new; Employee[] emps = fun2.apply(20); System.out.println(emps.length); } //構(gòu)造器引用 @Test public void test7(){ Function<String, Employee> fun = Employee::new; Employee em=fun.apply("www"); System.out.println(em.getName()); BiFunction<String, Integer, Employee> fun2 = Employee::new; } @Test public void test6(){ Supplier<Employee> sup = () -> new Employee(); System.out.println(sup.get()); System.out.println("------------------------------------"); Supplier<Employee> sup2 = Employee::new; System.out.println(sup2.get()); } //類(lèi)名 :: 實(shí)例方法名 @Test public void test5(){ BiPredicate<String, String> bp = (x, y) -> x.equals(y); System.out.println(bp.test("abcde", "abcde")); System.out.println("-----------------------------------------"); BiPredicate<String, String> bp2 = String::equals; System.out.println(bp2.test("abc", "abc")); System.out.println("-----------------------------------------"); Function<Employee, String> fun = (e) -> e.show(); System.out.println(fun.apply(new Employee())); System.out.println("-----------------------------------------"); Function<Employee, String> fun2 = Employee::show; System.out.println(fun2.apply(new Employee())); } //類(lèi)名 :: 靜態(tài)方法名 @Test public void test4(){ Comparator<Integer> com = (x, y) -> Integer.compare(x, y); System.out.println("-------------------------------------"); Comparator<Integer> com2 = Integer::compare; } @Test public void test3(){ BiFunction<Double, Double, Double> fun = (x, y) -> Math.max(x, y); System.out.println(fun.apply(1.5, 22.2)); System.out.println("--------------------------------------------------"); BiFunction<Double, Double, Double> fun2 = Math::max; System.out.println(fun2.apply(1.2, 1.5)); } //對(duì)象的引用 :: 實(shí)例方法名 @Test public void test2(){ Employee emp = new Employee(101, "張三", 18, 9999.99); Supplier<String> sup = () -> emp.getName(); System.out.println(sup.get()); System.out.println("----------------------------------"); Supplier<String> sup2 = emp::getName; System.out.println(sup2.get()); } @Test public void test1(){ PrintStream ps = System.out; Consumer<String> con = (str) -> ps.println(str); con.accept("Hello World!"); System.out.println("--------------------------------"); Consumer<String> con2 = ps::println; con2.accept("Hello Java8!"); Consumer<String> con3 = System.out::println; } }
感謝各位的閱讀,以上就是“Java 8方法引用與構(gòu)造器引用,數(shù)組引用舉例分析”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Java 8方法引用與構(gòu)造器引用,數(shù)組引用舉例分析這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。