如何在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 Array的地址。如何显式调用特定的数组函数或如何让编译器知道自动调用哪一个(隐式)?
我还不熟悉Java / Generics / Object ..刚刚从C ++迁移到模板:(
答案 0 :(得分: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[]) {
...
答案 1 :(得分:1)
我会去
System.out.println(Arrays.toString(myArray));
答案 2 :(得分: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());
}
答案 3 :(得分:1)
原语数组是java.lang.Object的子类型。在编译时解决重载并选择最具体的方法,以防万一为writeLine(对象文本)。
答案 4 :(得分: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