[英]How can I make a method take an array of any type as a parameter?
我希望能夠將任何數組類型作為方法中的參數:
public void foo(Array[] array) {
System.out.println(array.length)
}
有沒有辦法在同一個方法中傳遞String []或int []數組?
使用泛型 。
public <T>void foo(T[] array) {
System.out.println(array.length);
}
這對於基本類型數組不起作用,例如int[]
, boolean[]
, double[]
,......你必須使用它們的類包裝器: Integer[]
, Boolean[]
, Double[]
,.. 。或分別為每個所需的基本類型重載您的方法。
好吧,你可以這樣做(因為數組是一個對象) -
public static int getArrayLength(Object array) {
return Array.getLength(array);
}
public static void main(String[] args) {
int[] intArray = { 1, 2, 3 };
String[] stringArray = { "1", "2", "c", "d" };
System.out.println(getArrayLength(intArray));
System.out.println(getArrayLength(stringArray));
}
輸出是
3
4
可以使用泛型。
我不知道它我建議你在文檔中閱讀它。 http://docs.oracle.com/javase/tutorial/java/generics/index.html
泛型與Objects一起使用,所以我認為你不能在同一個方法中傳遞String []和int []。 請改用Integer []。
這是我將使用的代碼:
public static <K> int length(K[] array){
return array.length;
}
這也可行:
public static int length(Object[] array){
return array.length;
}
但它不允許您使用特定類型的Object而不是Object類。
我是新手,也許有更好的解決方案,但這是我唯一知道的!
正如其他人提到的那樣,如果你想要能夠接受原始類型的數組,現在有辦法做到這一點(除非你在Elliott的解決方案中做一些你只需要和Object的東西,並且只能使用方法比如將Object作為輸入的Array.getLength(Object)。
我做的是制作一個泛型方法,然后為每個基本數組類型重載它,如下所示:
public <T> void foo(T[] array) {
//Do something
}
public void foo(double[] array) {
Double[] dblArray = new Double[array.length];
for(int i = 0; i < array.length; i++){
dblArray[i] = array[i];
}
foo(dblArray);
}
//Repeat for int[], float[], long[], byte[], short[], char[], and boolean[]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.