Cug*_*uga 0 java arrays groovy
我在Groovy类中有一个String数组(args到main方法):
String[] args
我想将第3个元素转换为最后一个元素,然后将其转换为新的int数组.除了以下内容之外,还有更简单的方法在Groovy中执行此操作:
final int numInts = args.length - 2
final int [] intArray = new int[numInts]
for (int i = 2; i < args.length; i++) {
    intArray[i-2]=Integer.parseInt(args[i])
}
我想做:
final int numInts = args.length - 2
final int [] intArray = new int[numInts]
System.arraycopy(args, 2, intArray, 0, numInts)
但它抛出了一个类强制转换异常.
谢谢!
这是我的解决方案:
def intArray = args[2..-1].collect { it as int } as int[]
的2..-1范围选择从第三到最后的所有元素.该collect方法使用闭包中的代码转换数组的每个元素.最后一个as int[]将从collect方法得到的整数List转换为整数数组.由于Groovy不能使用基本类型,因此ints将始终存储为java.lang.Integers,但您可以使用它们,就好像它们是Java基元一样.从List到数组的转换是可选的.由于Collections是Groovy中的一等公民,并且比Java更容易使用,我更喜欢直接使用Lists而不是数组.
编辑:或者,您可以用collect所谓的扩展运算符 替换该方法*.,但您必须使用该方法asType(int)而不是短版本as int:
def intArray = args[2..-1]*.asType(int) as int[]
| 归档时间: | 
 | 
| 查看次数: | 4193 次 | 
| 最近记录: |