zoukankan      html  css  js  c++  java
  • java8 :: 用法 (JDK8 双冒号用法)

    特性

    jdk8中使用了::的用法。就是把方法当做参数传到stream内部,使stream的每个元素都传入到该方法里面执行一下,双冒号运算就是Java中的[方法引用],[方法引用]的格式是:

      类名::方法名 
    

    注意此处没有()。

    案例:

    表达式:

    person -> person.getAge();
    

    使用双冒号:

    Person::getAge
    

    表达式:

    new HashMap<>()
    

    使用双冒号:

    HsahMap :: new
    

    部分代码案例

    未使用双冒号

    public class MyTest {
        public static void main(String[] args) {
            List<String> a1 = Arrays.asList("a", "b", "c");
    
            for (String a : a1) {
                printValur(a);
            };
    
            a1.forEach(x -> MyTest.printValur(x));
    
    
        }
    
        public static void printValur(String str) {
            System.out.println("print value : " + str);
        }
    }
    

    使用后

         a1.forEach(MyTest::printValur);
    
            Consumer<String> consumer = MyTest::printValur;
            a1.forEach(x -> consumer.accept(x));
    

    未使用双冒号:

         List<String> list = a1.stream().map(x -> x.toUpperCase()).collect(Collectors.toList());
            System.out.println(list.toString());
    

    使用双冒号:

    
            ArrayList<String> collect = a1.stream().map(String::toUpperCase).collect(Collectors.toCollection(ArrayList::new));
            System.out.println(collect.toString());
    
     
     
    22人点赞
     
    技术
     
     


    作者:黑客和白帽子的故事
    链接:https://www.jianshu.com/p/96b4815d629e
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    easyui的datagrid右侧没有边框线
    移除input在type="number"时的上下箭头
    端口被占用的解决办法
    给DOM操作生成的元素添加事件
    前端工具——Gulp篇
    python类型学习
    python对象学习
    Python之系统交互(subprocess)
    如何准确高效的获取数据库新插入数据的主键id
    接口和抽象类有什么区别
  • 原文地址:https://www.cnblogs.com/shoshana-kong/p/15118490.html
Copyright © 2011-2022 走看看