gpt4 book ai didi

java - 通过函数转换 Varag

转载 作者:行者123 更新时间:2023-12-02 02:13:32 25 4
gpt4 key购买 nike

假设我在 Java8 中有两个可变参数函数:

public static Class3 func1(Class1... t){ ... }
public static Class3 func2(Class2... t){ ... }

和一个函数

public static Class2 transform(Class1 source){ ... }

它将 Class1 的对象转换为 Class2 的对象。在 func1 中调用 func2 并将每个 Class1 对象通过转换函数转换为 Class2 对象的最简洁(并且希望是有效)的方法是什么?

编辑:返回类型并不重要。我正在寻找类似于以下的习语:

public static Class3 func1(Class1... t){ 
return func2( doTransformMagic(t) );
}

我知道我可以将它们视为数组并编写类似的内容

public static Class3 func1(Class1... t){
Class2[] target = new Class2[t.length];
for (int i = 0; i < t.length; ++i){
target[i] = transform(t[i]);
}
return func2(target);
}

我问是否有任何内置的习惯用法可以更简洁地做到这一点。

最佳答案

没有什么好的简短方法可以做到这一点。特别是,不可能利用 func2 是可变参数方法这一事实。您必须通过传递一个新数组来调用func2

使用 Java 8 你可以做到

public static void func1(Class1... t) {
func2(Arrays.stream(t).map(SomeClass::transform).toArray(Class2[]::new));
}

对于 Java 5 的所有版本,您都可以做到

public static void func1(Class1... t) {
Class2[] arr = new Class2[t.length];
for (int i = 0; i < t.length; i++)
arr[i] = transform(t[i]);
func2(arr);
}

关于java - 通过函数转换 Varag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49609784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com