zoukankan      html  css  js  c++  java
  • 【8】java新特性,双冒号 :: 的使用场景

    在使用双冒号前我们要先搞清楚一个问题:为什么要使用双冒号?也就是双冒号的作用是什么。
    双冒号的设计初衷是为了化简Lambda表达式

    【1】java8中引入了一个新的操作符  :: , 是两个英文半角的冒号, 这个操作符用来引用方法, 其本质也是对接口的一种重写。

    【2】::操作符可以引用实例方法,也可以引用静态方法, 引用实例时::前面是实例, 引用静态方法时::前面是类

    package Study;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class TestLzw {
        protected interface commonFunc {
            void apply(String a);
        }
    
        public String doAdd(String a){
            System.out.println("---doAdd---" + a);
            return "";
        }
    
        public void addOne(String a){
            System.out.println("---addOne---" + a);
            addAll(a,this::doAdd);
        }
    
        public void addAll(String a, commonFunc commonFunc){
            System.out.println("---addAll---" + a);
            commonFunc.apply(a);  // 其实这里执行的就是doAdd
        }
    
        public static void main(String[] args) {
            System.out.println("示例一:");
            TestLzw test = new TestLzw();
            test.addOne("迪丽热巴");
    
            System.out.println("示例二:");
            List<String> names = new ArrayList<String>();
            names.add("Bush");
            names.add("Tom");
            names.add("Jim");
    
            TestLzw test1 = new TestLzw();
            names.forEach(System.out::println);
    
            System.out.println("引用实例前面是实例-----------------");
            names.forEach(test1::printRealName);
    
            System.out.println("引用静态方法前面是类----------------");
            names.forEach(TestLzw::printOtherName);
        }
    
        public void printRealName(String str) {
           System.out.println(str);
        }
    
        public static void printOtherName(String str) {
            System.out.println(str);
        }
    }
    

      

    参考:

    https://www.cnblogs.com/maohuidong/p/11527681.html

    https://www.jb51.net/article/188998.htm

    做一个优秀的程序媛
  • 相关阅读:
    PowerMock详解
    java -agent与Javassist
    gradle_____最后到齐的构建工具
    JVM--参数调优
    提高速度 history 的利用
    shell-异步执行
    redis常用命令与使用分析
    chrome mac 快捷键
    idea的快捷键和操作
    mysql事务以及隔离级别
  • 原文地址:https://www.cnblogs.com/oytt/p/14491773.html
Copyright © 2011-2022 走看看