• Java 方法引用_特性


    JAVA8 方法引用:(四种方法引用的使用)

      对象引用的特点:不同的对象可以操作同一块的内容;而方法引用就是指为一个方法设置别名,相当于一个方法定义了不同的名字。

    引用静态方法:

      类名称 ::  static 方法名称

    引用某个对象的方法:

      实例化对象 :: 普通方法

    引用特定类型的方法:

      特定类 :: 普通方法

    引用构造方法:

      类名称 :: new

    引用静态方法:【在String类中有一个valueOf()方法;】?

    /**
     * 实现方法的引用接口
     * @param<P> 引用方法参数的类型
     * @param<R> 引用方法返回的类型
     */
    interface IMessage<P,R> {
        public R zhuanhuan(P p) ;
    }
    
    public class TestDemo {
        public static void main(String [] args) {
            //即:将String(类).valueOf()方法变为了IMessage接口里的zhuanhuan()方法
             IMessage<Integer,String> msg = String :: valueOf;
             String str = msg.zhuanhuan(1000) ;
             System.out.println(str.replaceAll("0","9"));
        }
    }

    普通方法引用:

    /**
     * 实现方法的引用接口
     * @param<R> 引用方法返回的类型
     */
    interface IMessage<R> {
        public R upper() ;
    }
    
    public class TestDemo {
        public static void main(String [] args) {
            // String类的toUpperCase()方法的目的是将实例化对象调用该方法
            // 本代码中,将toUpperCase()函数的应用交给了IMessage接口的upper方法
             IMessage<String> msg = "Hello" :: toUpperCase;
             String str = msg.upper() ; // 相当于调用 "Hello".toUpperCase()
             System.out.println(str);
        }
    }

      【如果要实现函数的引用,那么必须要有接口,并且接口中有且只有一个抽象方法】

     >>> 如果函数引用的接口有多个抽象方法则为不合规则,这时需要引用一个注解,说明该接口为函数式接口(函数引用): @FunctionalInterface

      

      在进行方法引用的时候,还有另外的一种形式的引用:(需要特定类的对象支持)

    …………………………

    引用构造方法:

    interface IMessage<C> {
        public C create(String t , double p) ;
    }
    
    class Book {
        private String title ;
        private double price ;
        public Book(String title , double price) {
            this.title = title ;
            this.price = price ;
        }
        @Override
        public String toString() {
            return this.title + '	' + this.price ;
        }
    }
    
    public class TestDemo {
        public static void main(String [] args) {
            IMessage<Book> msg = Book :: new ;   //引用Book类中的构造方法
            // 调用的create实际上是调用的Book.Book()构造方法
             Book book = msg.create("Java Fail",12.2) ;
             System.out.println(book); 
        }
    }

      对象的引用是使用不同的名字,而方法引用是需要有一个函数式的接口并且设置号参数。


    推荐学习:https://www.cnblogs.com/xiaoxi/p/7099667.html

  • 相关阅读:
    一个屌丝程序猿的人生(一百零二)
    一个屌丝程序猿的人生(一百零一)
    一个屌丝程序猿的人生(一百)
    一个屌丝程序猿的人生(九十九)
    JavaEE开发之SpringMVC中的静态资源映射及服务器推送技术
    JavaEE开发之SpringMVC中的自定义拦截器及异常处理
    JavaEE开发之SpringMVC中的路由配置及参数传递详解
    JavaEE开发使用Maven管理的SpringMVC工程
    JavaEE开发之Spring中的条件注解、组合注解与元注解
    JavaEE开发之Spring中的多线程编程以及任务定时器详解
  • 原文地址:https://www.cnblogs.com/wangyuyang1016/p/10934474.html
Copyright © 2020-2023  润新知