2013-02-08 30 views
1

如何在Java中調用數組函數?在Java中調用重載函數?

目前,它看起來像:

public static void WriteLine(Object Array[]) { 
    for (int I = 0; I < Array.length; ++I) { 
     Out.println(Array[I]); 
    } 
} 

public static void WriteLine(Object Text) { 
    Out.println(Text); 
} 

我也試過:

public static <T> void WriteLine(T Array[]) { 
    for (int I = 0; I < Array.length; ++I) { 
     Out.println(Array[I]); 
    } 
} 

,並在我的主,我做的:

int[] I = new int[]{1, 2, 3, 4, 5}; 
WriteLine(I); 

我也試過:

WriteLine<int[]>(I); 

不工作..

它打印: [I @ 2f56f920

又名int數組的地址。我如何顯式調用特定的數組函數,或者如何讓編譯器知道哪一個自動調用(隱式地)?

我不習慣的Java /泛型/對象尚未..只要從C++移動,並用於模板:(

+0

不,我希望它打印任何類型的數組。 – Brandon 2013-02-08 19:46:20

+0

可怕的風格。我作爲循環的索引是什麼?直到最近你寫了FORTRAN嗎?瞭解Sun Java編碼風格標準。 – duffymo 2013-02-08 19:48:26

+2

找出解決方法後,開始遵循Java命名約定。 – adarshr 2013-02-08 19:48:35

回答

5

int不是Object這樣的int[]不是Object[]

Integer[] I = new Integer[]{1, 2, 3, 4, 5}; 
WriteLine(I); 

或者你應該已經超載了所有基本數據類型WriteLine

public static void WriteLine(int Array[]) { 
... 
public static void WriteLine(long Array[]) { 
... 
+0

Ahh ..盒裝類型。我會改爲重載所有基元類型。感謝您花時間回覆。我會接受這個答案。我認爲有一種方法可以明確調用特定的過載。 – Brandon 2013-02-08 19:55:40

+2

這就是爲什麼有9個'java.util.Arrays.toString'方法。 – jdb 2013-02-08 19:59:12

1

我會說出比其他的東西陣「陣」,如Java與對象或T泛型類混淆了Array類。如果您只想打印數組的每個元素,您可能還想考慮使用StringBuilder。

public static void write(Object arr[]) { 
    for (int i = 0; i < arr.length; ++i) { 
     System.out.println(arr[i]); 
    } 
} 

應該足夠好。

如果你真的想使用StringBuilder,然後打印,這樣做:

public static void write(Object arr[]) { 
    sb = new StringBuilder(); 
    for (int i = 0; i < arr.length; ++i) { 
     sb.append(arr[i] + " "); 
    } 
    System.out.println(sb.toString()); 
} 
+0

我會把它命名爲別的東西,但這不是問題。 '數組'甚至可能不被導入,但是不會混淆編譯器。例如:http://ideone.com/sFgpo7 – 2013-02-09 02:31:34

1

陣列的原始的java.lang.Object中的亞型。重載在編譯時解決,選擇最具體的方法是writeLine(Object text)。

0

你有兩個選擇,以確保正確的函數被調用:

1-

Object[] objArray = new Object[] { 1, 2, 3, 4, 5 }; 

2-

Integer[] integerArray = new Integer[] { 1, 2, 3, 4, 5 }; 

在一個側面說明,你應該遵循Java naming conventions。例如方法名稱應該是writeLine,循環中的索引變量應該是small case

+0

嗯..爲什麼是小案例?我會這樣做,但我不知道爲什麼小型案例對於Java來說非常重要?我正在閱讀上面的協議手冊,將我鏈接到atm。你似乎有很多像你一樣的小案例。只是爲了風格? – Brandon 2013-02-08 19:57:31

+1

遵循語言命名約定,可以讓其他程序員更易讀,否則它可能看起來很奇怪,很煩人。每種語言都有一個不同的命名約定,例如「WriteLine」適用於像「C#」這樣的語言,但它應該是Java中的「writeLine」。 – iTech 2013-02-08 19:59:54