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 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"));
    }
}

 

posted @ 2017-08-12 08:21  小洋编程  阅读(474)  评论(0编辑  收藏  举报