可变参数列表
来源:互联网 发布:顺义握奇数据怎么样 编辑:程序博客网 时间:2024/05/29 19:41
package variablearglist.one;public class Main { public static void variablearglist(Object... os){ System.out.print("["); for (Object i : os) { System.out.print(i + ","); } System.out.println("]"); }// public static void variablearglist(int... is) {// System.out.print("[");// for (int i : is) {// System.out.print(i + ",");// }// System.out.println("]");// } public static void main(String[] args) { System.out.println("多参数输出:"); variablearglist(1,2,3,4,5); int[] intArray=new int[]{1,2,3,4,5}; System.out.println("基本类型数组输出:"); variablearglist(intArray); Integer[] intObjArray=new Integer[]{ new Integer(0),new Integer(1),new Integer(2) }; System.out.println("包装类型数组输出:"); variablearglist(intObjArray); /* * Output: * 多参数输出: * [1,2,3,4,5,] * 基本类型数组输出: * [[I@24065c4,] * 包装类型数组输出: * [0,1,2,] */ }}
注:如果参数列表是Object… os且输入是多参数列表,则编译器会将多个基本类型元素包装为相应包装类数组(见 多参数输出),再传参;如果参数列表是Object… os且输入是基本类型数组(见 基本类型数组输出),则编译器无法转换,会将整个数组看成一个参数传入;如果参数列表是Object… os且输入是引用类型数组,则直接传参(见 包装类型数组输出)。
package variablearglist.one;public class Main {// public static void variablearglist(Object... os){// System.out.print("[");// for (Object i : os) {// System.out.print(i + ",");// }// System.out.println("]");// } public static void variablearglist(int... is) { System.out.print("["); for (int i : is) { System.out.print(i + ","); } System.out.println("]"); } public static void main(String[] args) { System.out.println("多参数输出:"); variablearglist(1,2,3,4,5); int[] intArray=new int[]{1,2,3,4,5}; System.out.println("基本类型数组输出:"); variablearglist(intArray);// Integer[] intObjArray=new Integer[]{// new Integer(0),new Integer(1),new Integer(2)// };// System.out.println("包装类型数组输出:");// variablearglist(intObjArray); /* * Output: * 多参数输出: * [1,2,3,4,5,] * 基本类型数组输出: * [1,2,3,4,5,] */ }}
注:如果参数列表是int… is且输入是多参数列表,则编译器会将多个基本类型元素包装为相应基本类型数组(见 多参数输出),再传参;如果参数列表是int… is且输入是基本类型数组(见 基本类型数组输出),则直接传参;同第一段代码对比,若输入类型为基本类型数组时,可变参数列表必须为对应基本类型加…若为Object…则编译器会将输入的基本类型数组看为一个元素传参。
package variablearglist.one;public class Main { public static void variablearglist(Object... os){ System.out.print("["); for (Object i : os) { System.out.print(i + ","); } System.out.println("]"); } public static void variablearglist(int... is) { System.out.print("["); for (int i : is) { System.out.print(i + ","); } System.out.println("]"); } public static void main(String[] args) { System.out.println("多参数输出:"); variablearglist(1,2,3,4,5);//The method variablearglist(Object[]) is ambiguous for the type Main int[] intArray=new int[]{1,2,3,4,5}; System.out.println("基本类型数组输出:"); variablearglist();//The method variablearglist(Object[]) is ambiguous for the type Main }}
注:下面两行代码:
variablearglist(1,2,3,4,5);variablearglist();
会有编译错误,编译器无法区分,调用的是哪一个方法。其中,第二行代码编译错误可以通过定义一个无参重载方法来解决。可变参数列表尽量少用(容易混淆,且方法的参数列表不够清晰,则会导致重载方法变得复杂)。
0 0
- Java可变参数列表
- 可变参数列表
- 关于可变参数列表
- 可变参数列表
- c++ 可变参数列表
- 可变参数列表
- cstdarg可变参数列表
- 可变参数列表
- java可变参数列表
- 可变参数列表
- Java 可变参数列表
- 可变参数列表
- C可变参数列表
- 可变参数列表
- C可变参数列表
- 可变参数列表
- /可变参数列表
- 可变参数列表
- 现在才写,晚了吗,嘎嘎
- ARM64 ret_to_user
- ssh 连接不上 oracle linux 7.2
- 模板类和友元
- spin_lock & mutex_lock的区别?
- 可变参数列表
- 用Android Studio签名打包signature versions v1 v2
- 音频文件pcm转换wav
- 求两个数的最大公约数
- linux+ubuntu:ubuntu下解压缩zip,tar,tar.gz和tar.bz2文件
- 公司入网--光猫路由设置以及注意事项
- AsycTask(handler的封装类)
- win10 切换IP配置脚本
- Android 用户行为收集之 GoogleAnalytics