JAVA8之方法引用和構造引用__java8.0

來源:互聯網
上載者:User

其實關於方法引用和構造引用大家可以簡單理解為lambda的簡寫形式

一.方法引用

方法引用分為三類:

1.指向靜態方法的方法引用

例子:

public static void main(String[] args) {String num="122";int parse = parse(Integer::parseInt,num);System.out.println(parse);}public static int parse(ToIntFunction<String> f,String num){return f.applyAsInt(num);}


2.指向任意類型執行個體方法的方法引用(這個執行個體長為方法的參數)

例子:

public static void main(String[] args) {List<String> list = Arrays.asList("av","asdf","sad","324","43");List<String> collect = list.stream().map(String::toUpperCase).collect(Collectors.toList());System.out.println(collect);}


3.指向現有對象的執行個體方法的方法引用(這個執行個體為外部對象)

例子:

public static void main(String[] args) {List<String> list = Arrays.asList("av","asdf","sad","324","43");String a="avasdf";List<String> collect = list.stream().filter(a::contains).collect(Collectors.toList());System.out.println(collect);}

這裡的2和3有點繞,主要區別在於執行個體一個為參數一個為外部對象.

二:構造引用

private String color;private int weight;public Apple() {}public Apple(String color) {super();this.color = color;}public Apple(int weight) {super();this.weight = weight;}public Apple(String color, int weight) {super();this.color = color;this.weight = weight;}@Overridepublic String toString() {return "Apple [color=" + color + ", weight=" + weight + "]";}

public static void main(String[] args) {Apple instance1 = instance(11,Apple::new);}public static Apple instance(int a,IntFunction<Apple> ifu){return ifu.apply(a);}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.