java 11 toArray(IntFunction)默认方法和示例

679 阅读1分钟

java11 features - Default Collection Method toArray(IntFunction) example

在这篇博文中,我们将学习Java 11的特性--toArray(IntFunction)方法。

默认集合方法 - toArray(IntFunction)

在Java 11版本中,java.util.collection 接口中增加了新的默认方法toArray(IntFunction)

这个方法是用来从一个对象集合中动态返回数组的。

在开发过程中,开发人员需要将集合转换为数组类型,这将缓解和简化开发人员的工作。

 default  T[] toArray(IntFunction generator) {  
        return toArray(generator.apply(0));  
    } 

这个方法的输入是IntFunction--功能接口,它只包含一个抽象的方法。

ToArray(IntFunction)示例

这个例子涵盖了以下内容

  • 如何将字符串列表转换为字符串数组?
  • 如何将字符串集合转换为字符串数组?

List.of() 和 在Java 10中引入的方法,以创建Set.of() 未经修改的集合

import java.util.Arrays;
import java.util.List;
import java.util.Set;

public class DefaultMethod {
    public static void main(String[] args) {
        final List numbersList = List.of("One", "Two", "Three", "Four");
        System.out.println(Arrays.toString(numbersList.toArray(String[]::new)));
        final Set setStrings = Set.of("Kiran", "John", "Frank", "Sai");
        System.out.println(Arrays.toString(setStrings.toArray(String[]::new)));

    }
}  

输出:

[One, Two, Three, Four]  
[Sai, John, Frank, Kiran]  

集合现有的ToArray方法

java集合接口已经有toArray() 方法。所以,编译器无法判断什么时候传递了一个空对象,并给出了一个编译错误。

toArray(Object[])方法对于Set类型是模糊的。原因是编译器在选择toArray(Object[])toArray(IntFunction[])方法时产生了歧义。

NullPointerException ,而不是null,像toArray((Object[])null)那样,将null置入。这两种方法都会被抛出。

集合接口有以下重载方法,toArray(IntFunction)方法是默认方法,其余方法不是。

 default  T[] toArray(IntFunction generator) {  
        return toArray(generator.apply(0));  
    }  
     T[] toArray(T[] a);  
    Object[] toArray();

总结

通过实例学习java10中Collection的默认静态方法toArray