• 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"));
        }
    }
  • 相关阅读:
    BAT脚本编写要点(1)_特殊字符
    开源爬虫软件汇总
    使用Gradle发布项目到JCenter仓库
    解决Android中,禁止ScrollView内的控件改变之后自动滚动
    理解RESTful架构
    一种为 Apk 动态写入信息的方案
    Proguard配置注解
    使用statsvn统计svn中的代码量
    android如何释放图片缓存
    Git命令参考手册(文本版)
  • 原文地址:https://www.cnblogs.com/hu1056043921/p/7348694.html
Copyright © 2020-2023  润新知