引用静态方法:类名称::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"));//
}
}
引用构造方法
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 Consumer<T> ,定义方法 public void accept(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"));
}
}