簡體   English   中英

簡化 Java 中的數組聲明

[英]Simplifying Array declaration in Java

考慮以下數組聲明,

int[] num2 = {1, 2, 3, 4, 5};
int[] num3 = new int[]{1, 2, 3, 4, 5};

System.out.println(Arrays.toString(num2));
System.out.println(Arrays.toString(num3));

因此,對於num3如果我直接將右側聲明傳遞給一個有效的函數。

Arrays.toString(new int[]{1,2,3})但是為什么不能使用num2方法

如果我調用someFunction({1,2,3,4,4})它會拋出一個錯誤

表達式的非法開始。

如果兩個聲明都有效,那么為什么我不能在 method 的參數中使用它?

當將一些臨時數組傳遞給函數時,我試圖簡化方法,例如

somefunction(new int[]{1,2,3,4})

是否可以在 java 中簡化它? 任何 Java 8 技巧?

您必須創建一個實例以將其傳遞給該方法,例如:

someFunction(new int[]{});

它在您的情況下不起作用,因為您只傳遞類型int[]而這是不正確的。

是否可以在 java 中簡化它? 任何 Java 8 技巧?

我想用它作為somefunc({1,2,3,4})

然后你可以使用可變參數,就像這樣:

ReturnType someFunction(int... a){}

然后你像這樣調用這個方法:

someFunction(1, 2, 3, 4); // valid 
someFunction(new int[]{1, 2, 3, 4}); // valid
someFunction(num2); // valid

我不明白什么是目的,但考慮這段代碼將任何 int 數組傳遞給某些功能:

somefucntion(Stream.iterate(1, i -> i + 1).limit(5).mapToInt(Integer::intValue).toArray());

void somefucntion(int[] ints) {
   System.out.println(Arrays.toString(ints));
}
Number[] longs1 = new Long[] { 1L, 2L, 3L };
Number[] longs2 = new Long[] { 4L, 5L, 6L };
Number[] concatted = arrayConcat(longs1, longs2);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM