关于可变参数,一直觉得不是很好用,我做了一下测试第一种:传入对应类型的引用数据类型数组,这个时候可变参数会被作为数组直接打开操作
- public class Demo1{
- public static void main(String[] args){
- Object[] objs = new Object[3];
- show(objs);
- }
- private static void show(Object ...objs){
- for(Object obj:objs){
- System.out.println(obj);
- }
- }
- }
复制代码 第二种:传入非引用数据类型数组,这个时候如果形参的类型是实参类型的父类,就可以被类型提升并当作一个元素来操作
- public class Demo1{
- public static void main(String[] args){
- int[] objs = new int[3];
- show(objs);
- }
- private static void show(Object ...objs){
- for(Object obj:objs){
- System.out.println(obj);
- }
- }
- }
复制代码 第三种:传入不同类型的引用数据类型数组,这个时候就会有警告,提示最好不要进行这样的类型转换
- public class Demo1{
- public static void main(String[] args){
- Integer[] objs = new Integer[3];
- show(objs);
- }
- private static void show(Object ...objs){
- for(Object obj:objs){
- System.out.println(obj);
- }
- }
- }
复制代码 第四种:参数列表为数组类型,这个时候就不会有警告
- public class Demo1{
- public static void main(String[] args){
- Integer[] objs = new Integer[3];
- show(objs);
- }
- private static void show(Object[] objs){
- for(Object obj:objs){
- System.out.println(obj);
- }
- }
- }
复制代码 而且,我们在传入参数的时候,一般不是一个,就是多个且放到一个数组中,
再者,由于JDK1.4到1.5的升级过程中存在的一些兼容问题
传入数组时就感觉非常的混乱
我们是做工程的,不是搞算法的,没必要把代码写的那么模棱两可
稳定,可读性和复用性是最初的前提
所以我觉得最好这样写
无论参数列表是可变参数还是数组类型,无论传入的参数是一个还是多个
都用数组表示
比如需要传入Object类型的可变参数
我们就用Object[]数组来表示,里面放上我们传入的参数列表,new Object[]{int[]{},String[]{},1,3,'a',。。。}
这样无论他参数列表是哪种形式,都可以正确的接收,也把自己的代码统一了起来,不至于到一个地方就有不同的书写,虽然做的事都是一样的
还有,就是为什么没有采用都转为Object当作单个元素用可变参数来接收
很明显
你写Object[]{1,2,3}比你写(Object)1,(Object)2,来的方便多了
这是我的一点看法,希望跟大家讨论下,反正我觉得什么静态导入,可变参数之流简直弱爆了,
泛型也就那么回事,没有什么实际意义,而且还把书写变得那么麻烦
JDK1.5的新特性有几个还好,有几个真个很鸡肋
|