假设我在Java8中有两个可变函数:
select *,
sum([NoOfLeaves]) over (partition by EmpCode order by id) Leaves
from SampleLeave
order by 1
和一个功能
public static Class3 func1(Class1... t){ ... }
public static Class3 func2(Class2... t){ ... }
将Class1的对象转换为Class2的对象。在func1中调用func2的最简单(并且希望是有效的)方法是什么,每个Class1对象通过transform-function转换为Class2的对象?
编辑:返回类型并不重要。我正在寻找类似于:
的成语public static Class2 transform(Class1 source){ ... }
我知道我可以将它们视为数组并编写类似
的内容public static Class3 func1(Class1... t){
return func2( doTransformMagic(t) );
}
我问是否有任何内置习语可以更加轻松地做到这一点。
答案 0 :(得分:2)
没有很好的简短方法可以做到这一点。特别是不可能利用func2
是varargs方法的事实。您将不得不通过传递新阵列来呼叫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);
}