在Java中调用重载函数?

Bra*_*don 1 java generics explicit implicit

如何在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);
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

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

在我的主要,我做:

int[] I = new int[]{1, 2, 3, 4, 5};
WriteLine(I);
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

WriteLine<int[]>(I);
Run Code Online (Sandbox Code Playgroud)

不起作用..

它打印:[I @ 2f56f920

又名int数组的地址.如何显式调用特定的数组函数或如何让编译器知道哪一个自动调用(隐式)?

我还不习惯Java/Generics/Object ..刚刚从C++移动并用于模板:(

jdb*_*jdb 5

一个int不是Object这样一个int[]不是一个Object[]:

Integer[] I = new Integer[]{1, 2, 3, 4, 5};
WriteLine(I);
Run Code Online (Sandbox Code Playgroud)

或者你应该WriteLine为所有原始类型重载:

public static void WriteLine(int Array[]) {
...
public static void WriteLine(long Array[]) {
...
Run Code Online (Sandbox Code Playgroud)

  • 这就是为什么有9个`java.util.Arrays.toString`方法. (2认同)