public class VarArgs {
static void printArray(A... args) {
for (Object obj : args) {
System.out.println(obj + " ");
}
System.out.println("#######");
}
static void printArray(Object... args) {
for (Object obj : args) {
System.out.println(obj + " ");
}
System.out.println("*******");
}
static void printArray(String... args) {
for (Object obj : args) {
System.out.println(obj + " ");
}
System.out.println("*******");
}
public static void main(String[] args) {
printArray();
printArray(1, 2);
printArray("a", "b", "c");
}
}
class A {
public A() {
System.out.println("A");
}
}
}
所谓可变参数列表,就是不指定方法参数的个数,可以是多个,也可以是0个。这样就会带来一个问题:当我们重载带有可变参列表的方法时,可能会遇到上述代码的情况,出现static void printArray(String... args)和static void printArray(A... args)。当我们在main()方法中调用printArray()方法的时候,编译器就不知道该调用那个printArray()方法了。
此外,如果注释掉static void printArray(String... args)和static void printArray(A... args)其中一个,程序就能跑起来了(虽然还有个static void printArray(Object... args))。
我是这样想的:所有的类都继承自Object类,即不管什么类型的参数都是Object的子类,在类型转换的时候,总是满足最低原则,只要能符合条件,就不在继续向上转型。所以main()中调用printArray()的时候,会先查找除了printArray(Object... args)以外的别的方法,如果存在,就调用;否则就调用printArray(Object... args)方法。如果是实参为基本类型,就会autoboxing为相应的包装类,再调用printArray(Object... args)。
小白初学,如有错误,恳请指正!
分享到:
相关推荐
NULL 博文链接:https://liuzhengli0706-163-com.iteye.com/blog/1840781
主要介绍了Java数组传递及可变参数操作,结合实例形式详细分析了java数组参数传递与可变参数相关使用技巧,需要的朋友可以参考下
10.java可变参数.zip10.java可变参数.zip10.java可变参数.zip10.java可变参数.zip10.java可变参数.zip10.java可变参数.zip10.java可变参数.zip10.java可变参数.zip10.java可变参数.zip10.java可变参数.zip10.java可...
NULL 博文链接:https://suny1103.iteye.com/blog/1248976
主要介绍了解析Java的可变参数列表及其使用时的注意点,注意可变参数必须位于最后一项,需要的朋友可以参考下
Java可变参数(Varargs)是一种语言特性,允许方法接受可变数量的参数。在方法声明中使用省略号(...) 表示,可以将不定数量的参数传递给方法。可变参数使得方法更加灵活,可以接受任意数量的参数,并以数组形式访问...
主要介绍了Java中的可变参数常见用法,结合实例形式总结分析了java可变参数的常见功能、使用方法及相关操作注意事项,需要的朋友可以参考下
android蓝牙框架层源码,看到java的可变参数,摘出来写了个小demo,备忘。
//此时,数组arr必须是最后一个参数; public static int sum(int... arr) // 此时的参数arr是一个整形的数组 { int temp = 0; for (int i = 0; i ; i++) { temp += arr[i]; } return temp; } ...
主要介绍了Java可变参数列表详解的相关资料,需要的朋友可以参考下
下面小编就为大家带来一篇关于java中可变长参数的定义及使用方法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
java可变参数.pdf
那个可变参数的就是个数组,你传多少个参数都被放到那个数组里面。这样方便了程序员,因为如果不确定要传的参数的个数的话,我们要写带1个参数的,带2个参数,带3个参数的,这样很麻烦。 该进后的这个方法,我们只要...
主要介绍了Kotlin传递可变长参数给Java可变参数实例代码,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
在Java5 中提供了变长参数(varargs),也是在方法定义中可以使用个数不确定的参数,对于同一... 在具有可变长参数的方法中可以把参数当成数组使用,例如可以循环输出所有的参数值。 print(String… args){ for
Spring整合Quartz,在运行的过程中动态改变Trigger的参数
主要介绍了Java中可变长度参数代码详解,涉及了实参个数可变的定义方法,数组包裹实参等几个问题,具有一定参考价值,需要的朋友可以了解下。
java可变参数[文].pdf
NULL 博文链接:https://zhaoshijie.iteye.com/blog/1063296
输入的第一个数字为准备输入函数的个数。 对后面输入的函数求和。