当前位置: 代码迷 >> J2SE >> 诡谲的爪哇语法,求拯救:)
  详细解决方案

诡谲的爪哇语法,求拯救:)

热度:3668   发布时间:2013-02-25 21:55:30.0
诡异的爪哇语法,求拯救:)
    public final AsyncTask<Params, Progress, Result> execute(Params... params) {
        return executeOnExecutor(sDefaultExecutor, params);
    }

Params... params
这货是神马?
总额可以编译通过?碉堡了:(

 哥们喵的很搞笑
引用:
引用:
jdk1.5之后的新特性,可变参数。注意这个可变参数必须是在所有参数的最后一个才能定义。
喵的,可变参数有神马用?
为神马不放在ArrayList里呢?
喵的,这个不就是个可变长度参数么?

为了方便方法调用的。你用ArrayList当然可以。就是调用的时候,是不是要先new ArrayList然后再用这个list把参数都add进去这个麻烦了点。可变参数就是可以直接在调用方法的时候传或不传参数都行
例如你这个例子调用的时候就可以execute(param1, param2, param3)还可以不传execute();
如果你用List作为参数的话不是调用起来麻烦了点吗,调用方法之前要做这些个步骤
List list=new ArrayList();
list.add(param1);
list.add(param2);
list.add(param3);
execute(list);不传参数的话又得用execute(null);就是调用起来不方便罢了可以理解为:Params[] params
这种参数写法会根据你传入参数的数量封装为一个相应长度的数组,其效果和数组参数相同,但要求必须作为方法的最后一个参数。
另外这样写将可能在方法重载时混淆,如get(String...strs)和get(String str)在get("")时就导致参数类型不明确的问题,必须要写成get(new String[]{""})来表示调用的是前面的方法。jdk1.5之后的新特性,可变参数。注意这个可变参数必须是在所有参数的最后一个才能定义。
  相关解决方案