zoukankan      html  css  js  c++  java
  • 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"));
        }
    }
  • 相关阅读:
    Openjudge-2694-逆波兰表达式
    POJ-3984-迷宫问题
    HUST软件与微电子学院第八届程序设计竞赛-小乐乐下象棋
    LiberOJ-#6000. 「网络流 24 题」搭配飞行员 (二分图匹配)
    BZOJ-3172: [Tjoi2013]单词 (AC自动姬 fail树)
    BZOJ-1036: [ZJOI2008]树的统计Count(树链剖分+线段树)
    HDU-3966 Aragorn's Story(树链剖分+线段树)
    hihoCoder-1036 Trie图(AC自动姬)
    WHYZOJ-#14 数列(矩阵快速幂)
    WHYZOJ-#66 穿越七色虹(二分)
  • 原文地址:https://www.cnblogs.com/hu1056043921/p/7348694.html
Copyright © 2011-2022 走看看