美文网首页
方法引用

方法引用

作者: i小雨 | 来源:发表于2021-01-18 17:13 被阅读0次

    方法引用:若lambda体中的内容有方法已经实现了,我们可以使用”方法引用“
    (可以理解为方法引用是lambda表达式的另一种表现形式)

    主要有三种语法格式:
    1、对象::实例方法名
    2、类::静态方法名
    3、类::实例方法名

    方法引用:对象::实例方法名

    需要注意的是:方法引用的方法的 参数和返回值 必须和函数式接口的方法的参数和返回值一致

    public class TestMethodRef {
    
        public static void main(String[] args) {
    
            PrintStream ps = System.out;
    
            //原始方法
            Consumer<String> con = (str)->System.out.println(str);
    
            //改进
            Consumer<String> con1 = (str) -> ps.println(str);
    
            //方法引用
            /**
             * 需要注意的是方法引用的方法的 参数和返回值 必须和函数式接口的方法的参数和返回值一致
             */
            Consumer<String> con2 = ps::println;
    
            //改进
            Consumer<String> con3 = System.out::println;
    
    
            con.accept("123");
            con1.accept("123");
            con2.accept("123");
            con3.accept("123");
        }
    }
    ***********************************************************
    123
    123
    123
    123
    Process finished with exit code 0
    
    image.png

    方法引用:类::静态方法名

    System.out.println("*****************2、类::静态方法名******************");
    Comparator<Integer> com = (x,y) -> Integer.compare(x,y);
    
    Comparator<Integer> com1 = Integer::compare;
    
    System.out.println(com.compare(3, 2));
    System.out.println(com1.compare(1, 2));
    System.out.println(com1.compare(2, 2));
    *************************************************
    1
    -1
    0
    

    方法引用:类::实例方法名

    注意:该方法的使用的规则:第一个参数必须是方法的调用者,第二个参数必须是方法的参数。

    System.out.println("*****************3、类::实例方法名******************");
    BiPredicate<String,String> bp = (x,y) -> x.equals(y);
    
    //注意:该方法的使用的规则:第一个参数必须是方法的调用者,第二个参数必须是方法的参数。
    BiPredicate<String,String> bp1 = String::equals;
    
    System.out.println(bp.test("123","123"));
    System.out.println(bp1.test("1234","123"));
    ***************************************
    true
    false
    

    相关文章

      网友评论

          本文标题:方法引用

          本文链接:https://www.haomeiwen.com/subject/jclxzktx.html