java中的方法引用
Posted IT云私塾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中的方法引用相关的知识,希望对你有一定的参考价值。
引用静态方法:类名称::static 方法名称;
引用某个对象的方法:对象::普通方法;
引用特定类方法:特定类::方法
引用构造方法:类名称::new
范例:引用静态方法
package com.java.demo; interface IMessage<P,R>{ // P表示方法的参数类型,R表示方法的返回值类型 public R change(P p); } public class TestDemo{ public static void main(String args[]){ /** * 将基本数据类型转换成String类型:public static String valueOf(); * 下面语句表示,将String类中改的valueOf()方法传递给change()方法 */ IMessage<Integer,String> msg = String :: valueOf; String str = msg.change(100); System.out.println(str.replaceAll("0","6")); } }
引用某个对象的方法
@FunctionalInterface //此处为函数式接口,只允许接口定义一个方法
package com.java.demo;
@FunctionalInterface //此处为函数式接口,只可以定义一个方法 interface IMessage<R>{ // P表示方法的参数类型,R表示方法的返回值类型 public R change(); } public class TestDemo{ public static void main(String args[]){ /** *String类的转大写方法:public String toUpperCase(); *""hello"为String类的匿名对象,传递该普通方法 */ IMessage<String> msg = "hello" :: toUpperCase; String str = msg.change(); System.out.println(str);//HELLO } }
引用特定类
package com.java.demo; interface IMessage<R>{ // P表示方法的参数类型,R表示方法的返回值类型 public R change(String str1,String str2); } public class TestDemo{ public static void main(String args[]){ /** *String类的转大写方法:public int compareTo(); 字符串比较,相等返回 0,小于返回<0;大约返回数字>0 *srt1.compareTo(str2); */ IMessage<Integer> msg = String :: compareTo; System.out.println(msg.change("java", "java"));//0 } }
引用构造方法
package com.java.demo; interface IMessage<R>{ // P表示方法的参数类型,R表示方法的返回值类型 public R change(String title); } class Book{ private String title; public Book(String title){ this.title = title; } @Override public String toString() { return "书名:" +this.title; } } public class TestDemo{ public static void main(String args[]){ IMessage<Book> msg =Book :: new; //msg.change("java开发")返回的是Book类对象 System.out.println(msg.change("java开发")); } }
内建函数式接口:
功能型接口:public Interface Function<T,R> ,定义的方法:public R appy(T t);接受参数也返回一个处理结果
消费型接口:public Interface Customer<T> ,定义方法 public void appy(T t);只接受参数不返回处理结果
供给型接口:public Interface Supper<T> 定义反方法 :public T get();不接受参数只返回处理结果
断言型接口:public Interface Predicate<T> 定义方法 public boolean test<T t> 接受参数返回boolean值
package com.java.demo; import java.util.function.Function; public class TestDemo{ public static void main(String args[]){ Function<String,Boolean> fun ="hello" :: equals; System.out.println(fun.apply("hello")); } }