Java中的调用重载函数?

Java中的调用重载函数?,java,generics,implicit,explicit,Java,Generics,Implicit,Explicit,如何在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 <

如何在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]);
    }
}
WriteLine<int[]>(I);
WriteLine(I);
不起作用

它打印: [I@2f56f920

也称为int数组的地址。如何显式调用特定的数组函数,或者如何让编译器知道自动(隐式)调用哪个函数


我不习惯java/泛型/对象……只是从C++移到模板:(

< p> A<代码> int <代码>不是<代码>对象< /> >,所以<代码> int [] />代码>不是<代码>对象[] /C>:< /P>
Integer[] I = new Integer[]{1, 2, 3, 4, 5};
WriteLine(I);
或者您应该为所有基本类型重载
WriteLine

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

int
不是
对象,因此
int[]
不是
对象[]

Integer[] I = new Integer[]{1, 2, 3, 4, 5};
WriteLine(I);
或者您应该为所有基本类型重载
WriteLine

public static void WriteLine(int Array[]) {
...
public static void WriteLine(long Array[]) {
...
我会选择

System.out.println(Arrays.toString(myArray));
我会选择

System.out.println(Arrays.toString(myArray));

< >我将把数组命名为“数组”,因为java将数组类与对象或T泛型类混淆。如果您想要打印数组的每个元素,您可能还想考虑使用StringBuilder。< /P>
public static void write(Object arr[]) {
    for (int i = 0; i < arr.length; ++i) {
        System.out.println(arr[i]);
    }
}
公共静态无效写入(对象arr[]{
对于(int i=0;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());
}
公共静态无效写入(对象arr[]{
sb=新的StringBuilder();
对于(int i=0;i<>代码> > p>我将把数组命名为“数组”,因为java将数组类与对象或T泛型类混淆。如果您想要打印数组的每个元素,您可能还想考虑使用StringBuilder。< /P>
public static void write(Object arr[]) {
    for (int i = 0; i < arr.length; ++i) {
        System.out.println(arr[i]);
    }
}
公共静态无效写入(对象arr[]{
对于(int i=0;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());
}
公共静态无效写入(对象arr[]{
sb=新的StringBuilder();
对于(int i=0;i
原语数组是java.lang.Object的子类型。重载在编译时解决,并选择最具体的方法,在case中为writeLine(对象文本)。

原语数组是java.lang.Object的子类型。重载在编译时解决,并选择最具体的方法,在case中为writeLine(对象文本)。

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

1-

二,-


在旁注中,您应该遵循。例如,方法名称应该是
writeLine
,循环中的索引变量应该是
small case

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

1-

二,-



在旁注中,您应该遵循。例如,方法名称应该是
writeLine
,循环中的索引变量应该是
small case

不,我希望它打印任何类型的数组。糟糕的样式。作为循环的索引,I是怎么回事?直到最近您才编写FORTRAN吗?学习Sun Java编码样式标准。之后你可以找到解决的办法,从Java命名约定开始。我不明白我的编码风格有什么不对:S,是的,我写Fortran,C++,Haskel,C,PHP,JS,Pascal,Delphi,X86 ASM等等。在NETBejava中,我按一下右键,然后格式化,这就是它给我的风格:S@CantChooseUsernames与许多语言不同,Java作为a.代码约定是a(不完整?)在这种情况下是一组超级代码格式。人们通常不太关心Java格式的差异,只要它以某种方式一致地缩进。不,我希望它打印任何类型的数组。糟糕的样式。I作为循环的索引是怎么回事?直到最近你还写过FORTRAN吗?学习Sun Java编码样式标准。之后找出这个问题的解决方案,从java命名约定开始。我不理解我的编码风格有什么不对:S,是的,我写FORTRAN,C++,Haskel,C,PHP,JS,Pascal,Delphi,X86 ASM等等。在NETBeBox中,我按一下右键,然后格式化,这就是它给我的风格:S@CantChooseUsernames与许多语言不同,Java作为.代码约定是一种(不完整?)在这种情况下是一组超级代码格式。人们通常不太关心Java格式的差异,只要它以某种方式一致缩进。啊..盒装类型。我将选择重载所有基本类型。谢谢你花时间回复。我将接受这一答案。我想有一种方法可以解释我会调用一个特定的重载。这就是为什么会有9
java.util.Arrays.toString
methods.Ahh..Boxed类型。我会选择重载所有基本类型。谢谢你花时间回复。我会接受这个答案。我认为有一种方法可以显式调用特定的重载。这就是为什么会有9
java.util.Arrays.toString
methods.Hmm..为什么小写?我会这么做,但我不知道为什么小写对java如此重要?我正在阅读约定手册,上面有人将我链接到atm。它似乎像你建议的那样有很多小写。只是为了风格?遵循语言命名约定可以让你的代码对其他人更具可读性rogrammers,否则它可能看起来很奇怪和烦人。每种语言都有不同的命名约定,例如
WriteLine
对于
C
这样的语言来说是可以的,但在Java.Hmm中它应该是
WriteLine
。为什么是小写?我会这样做,但我不知道小写对Java来说为什么如此重要?我正在读修道院上面有人把我和自动取款机联系起来了。它似乎有很多小c