1

如何在 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/Generics/Object .. 刚从 C++ 迁移到模板 :(

4

5 回答 5

5

An intis not anObject所以 an int[]is not an 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[]) {
...
于 2013-02-08T19:48:18.983 回答
1

我会去

System.out.println(Arrays.toString(myArray));
于 2013-02-08T19:49:27.617 回答
1

我会将您的数组命名为“Array”以外的名称,因为 Java 将 Array 类与 Object 或 T 泛型类混淆了。如果您只想打印数组的每个元素,您可能还需要考虑使用 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());
}
于 2013-02-08T19:50:04.387 回答
1

原始数组是 java.lang.Object 的子类型。重载在编译时解决,选择最具体的方法,如果是 writeLine(Object text)。

于 2013-02-08T19:52:33.720 回答
0

您有两个选项来确保调用正确的函数:

1-

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

2-

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

附带说明一下,您应该遵循Java 命名约定。例如方法名称应该是writeLine循环中的索引变量应该是small case

于 2013-02-08T19:55:35.980 回答