gpt4 book ai didi

java - Java 中的重载方法

转载 作者:行者123 更新时间:2023-12-01 17:28:05 24 4
gpt4 key购买 nike

class Overload{

public static void main(String args[]) {
int[] number={1,2,3,4,5,6,7,8,9,10};
int [] num={1,2,3,4,5};
int i;
int sum=0;
sum = f(number);
int sum1= f(num);
System.out.println("The sum is" +sum + ".");
System.out.println("The sum is" +sum1 + ".");
}

public static int f(int[] value) {
int i, total = 0;
for(i=0; i<10; i++) {
total = total + value[ i ];
}
return (total);
}

public static int f(int... x) {
int i, total = 0;
for(i=0; i<10; i++) {
total = total + x[ i ];
}
return (total);
}

}

编译上述程序时出现错误

C:\Program Files\Java\jdk1.7.0_09\bin>javac Overload.javaOverload.java:30: error: cannot declare both f(int...) and f(int[]) in Overloadpublic static int f(int... x)

最佳答案

public static int f(int... x)

只不过是:-

public static int f(int[] x)

唯一的区别是它不一定需要传递参数。当您传递单个元素时,它们会在内部转换为数组。因此,您实际上只是传递了一个数组

而后者需要一个参数。至少是一个空数组。

如果您将数组作为参数传递,则这两种方法都可以被调用。

所以调用:

f(new int[] {1, 2});

这两种方法都可以。所以,存在歧义。

<小时/>

但是,f(5) 只能对第一个方法进行调用。因为 5 不能分配给数组类型。因此,仅当您传递数组时才会出现歧义。

关于java - Java 中的重载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13478435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com