【问题标题】:What is the meaning Params... ? in android参数是什么意思...?在安卓中
【发布时间】:2017-01-14 17:29:35
【问题描述】:

我还是 android dev 的新手,所以今天我在android docs 中偶然发现了这段代码

Result doInBackground (Params... params)

Params... 是什么意思?和Params一样吗?但是当使用Params(没有...)时,它会抛出一个错误而不是覆盖抽象。

这让我很困惑。

【问题讨论】:

标签: android


【解决方案1】:

这是一个 Java 概念,称为 var args。将某种类型的数组作为方法参数传递是一种糖语法。

所以当你说

Result doInBackground (Integer... args)
{
  Integer [] vals=args;
}

并且您可以访问该数组中的值。

就AsyncTask 的方法而言,您可以将参数类型从Params 更改为您需要的类型。 Params 只是一个模板,您需要在实施过程中进行更改。

【讨论】:

    【解决方案2】:

    这在 Java 中称为varargs,是一个参数数组,但语法不同。您可以点击here查看有关此的文档

    this 的问题也有你的答案。

    【讨论】:

      【解决方案3】:

      AsyncTask 是一个具有三个方法的类。在 onPreExecute() 之后调用 DoInBackground()。在某些情况下,onPreExecute 可能会返回一些值。这个值可以被 doInBackground() 用 Params 字段捕获。 此参数可以是 Int、Strings、Collection、Context。

      注意:与 onPOstExecute(Params params) 类似。此参数是 doInBackground 中返回的值。

      如果你没有任何值要返回,那么你不需要在这些方法中使用 params 值。

      【讨论】:

        【解决方案4】:

        Params...这里指的是参数。 ... 是一种表示数组的方式。

        Result doInBackground (Params... params)

        这意味着paramsParams 类型的数组。默认情况下,函数doInBackground 接收的值存储在params[0] 中。有时函数在执行时可能会收到另一个值,该值将存储在更高的索引中。

        希望能解决你的问题:-)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-10-17
          • 1970-01-01
          • 1970-01-01
          • 2013-07-07
          • 2013-10-28
          • 1970-01-01
          • 2011-08-12
          • 2017-06-11
          相关资源
          最近更新 更多