问答详情
源自:4-4 Stream操作集合中的数据-上

toArray()方法需要传入一个IntFunction,可是String[]::new 跟int一点关系都没有,怎么理解?

public static void main(String[] args) {
    Stream<String> stream = Stream.of("1", "2", "3");




    // 这里的toArray()方法需要传入一个IntFunction,可是String[]::new 跟int一点关系都没有
    String[] strArray = stream.toArray(String[]::new);




}

// 这里的toArray()方法需要传入一个IntFunction,可是String[]::new 跟int一点关系都没有,怎么理解?


http://img3.mukewang.com/5e4e55290001d21307210297.jpg

提问者:qq_大脸猫爱吃小鱼头_0 2020-02-20 17:44

个回答

  • 慕粉3220770
    2020-04-12 21:39:47

    String[]::new means size -> new String[size].

    https://stackoverflow.com/questions/44310226/what-does-stringnew-mean

  • 出徒ing
    2020-03-22 16:23:05

    Returns an array containing the elements of this stream, using the
    * provided {@code generator} function to allocate the returned array
    返回一个包含此流元素的数组,使用提供的函数来分配返回的数组
    
    @param generator a function which produces a new array of the desired
    *                  type and the provided length
    生成所需类型和提供长度的新数组的函数

    String[]::new  ,ctrl+鼠标左击 ::  

    你进去就是IntFunction接口。

    stream01.toArray(Person[]::new); 改成Person类也可以


  • zhanghongzheng
    2020-03-19 09:43:22

    同问,还是没理解

  • shihao丶H
    2020-02-27 14:03:43

     @param generator a function which produces a new array of the desired type and the provided length

    产生所需类型和所提供长度的新数组的函数