在这篇博文中,我们将学习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