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());

原文地址:https://www.cnblogs.com/maohuidong/p/11527681.html

时间: 2024-08-28 06:03:46

java8 :: 用法 (JDK8 双冒号用法)的相关文章

转载——c++中冒号(:)和双冒号(::)的用法

1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned char a:4; unsigned char c; } ; XXX (2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const型. struct _XXX{ _XXX() : y(0xc0) {} }; (3) public:和private:后面的冒号,表示后面定义的所有成员都是公有或私有的,直到下一个"pub

[email&#160;protected]冒号(:)和双冒号(::)的用法

转自:http://blog.csdn.net/zimingjushi/article/details/6549390 1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{unsigned char a:4;unsigned char c;} ; XXX (2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const型. struct _XXX{_XXX() : y(0xc0) {}};

c++中冒号(:)和双冒号(::)的用法

1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned char a:4; unsigned char c; } ; XXX (2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const型. struct _XXX{ _XXX() : y(0xc0) {} }; (3) public:和private:后面的冒号,表示后面定义的所有成员都是公有或私有的,直到下一个"pub

php中双冒号::的用法

注:本篇博客系转载,出处不可考(至少对我来说不可考...) 双冒号操作符即作用域限定操作符Scope Resolution Operator可以访问静态.const和类中重写的属性与方法. 在类定义外使用的话,使用类名调用.在PHP 5.3.0,可以使用变量代替类名. Program List:用变量在类定义外部访问 <?php class Fruit { const CONST_VALUE = 'Fruit Color'; } $classname = 'Fruit'; echo $class

【JAVA8】双冒号

现在JDK双冒号是: public class MyTest {     public static void  printValur(String str){         System.out.println("print value : "+str);     }     public static void main(String[] args) {         List<String> al = Arrays.asList("a", &q

c++中的点号(.),冒号(:)和双冒号(::)运算符

1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned char a:4;  //char型的字符a占4位 unsigned char c; } XXX; (2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const型. struct _XXX{ _XXX() : y(0xc0) { } }; (3) public:和private:后面的冒号,表示后面定义的所有成员都是

wind的R接口、况客RSDK学习,双冒号以及quantmod主题

本文主要参考:来自segmentfault上的FinanceR的专栏 https://segmentfault.com/a/1190000004580610 并自己对生疏不解之处做了补充和注释. 当然,况客的R SDK的强大之处在于,你注册账号,进入网站的控制台后,会直接在浏览器模拟出一个RStudio的页面,可以直接运行操作,还可以设置. 而对于的qutke包,托管于github,所谓的API,应当就是指这个包的用法. 每个人会分配一个私钥. 个人感觉,现在他仅仅是提供了一个浏览器平台,以及数

css中双冒号和单冒号区别

:——是指的伪类 ::——是指的伪元素 1.字面意思: 伪类,1.css中有类选择器,某些元素并未定义类名,就可以通过伪类赋予样式,如:[:nth-child(n)]:2.伪类可以应用于元素执行某种状态,如:[:hover]鼠标经过元素时 伪元素,创建一个新元素应用于文档,但是并不存在于文档中. 常见的伪元素选择器:  ::first-letter 选择元素文本的第一个字(母).  ::first-line 选择元素文本的第一行.  ::before 在元素内容的最前面添加新内容.  ::aft

理解 Java 方法引用(方法引用符:“双冒号 :: ”)

方法引用 在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案:拿什么参数做什么操作.那么考虑一种情况:如果我们在Lambda中所指定的操作方案,已经有地方存在相同方案,那是否还有必要再写重复逻辑? 冗余的Lambda场景 来看一个简单的函数式接口以应用Lambda表达式: @FunctionalInterface public interface Printable { /** * 接收一个字符串参数,打印显示它 * @param str 字符串 */ public abs