【问题标题】:AsyncTask's doInBackground(Params... params)AsyncTask 的 doInBackground(Params...params)
【发布时间】:2011-06-14 11:54:36
【问题描述】:

我对@9​​87654323@中的参数语法不熟悉

这种东西叫什么,我该如何使用它?

【问题讨论】:

标签: android syntax parameters android-asynctask


【解决方案1】:

正如 devA 和 VVV 所说,这就是所谓的“可变参数”。实际上,以下两行代码是等价的:

public void makeLemonade(String[] args) {

public void makeLemonade(String... args) {

方法中的代码是相同的,但是当它被调用时,它们会被不同地调用。第一个需要像这样调用:

makeLemonade(new String[]{"lemon1", "lemon2", "lemon3"});

虽然第二个方法签名可以有 0 到(假定的)无限个参数,但它们都需要是字符串参数。以下所有调用都可以:

makeLemonade("lemon1");
makeLemonade("lemon4", "lemon7", "lemon11", "lemon12"); 
makeLemonade();
// ... etc ...

两者之间的细微差别是,如果您使用可变参数,则可以在此处合法地调用 makeLemonade()。

【讨论】:

  • @Travis 你如何表示不传递任何参数?一定要选择随机类型吗?
  • 为了表示不传递任何参数,你的方法签名不会包含任何参数,所以在上面你看到“public void makeLemonade(String...args)”的地方,你可以使用“公共无效makeLemonade()”。这告诉编译器不允许使用任何参数。如果你想用 0 个参数调用方法,那是完全有效的,你可以这样做,然后调用“makeLemonade()”。
【解决方案2】:

它们被称为 Var Args.. 就像一个数组.. 你可以传递多个项目并像 params[0].. 等一样访问。

【讨论】:

    【解决方案3】:

    Params... params 表示可变参数。它是在 J2SE5.0 中添加的。 这意味着您可以传递任意数量的参数,或者您可以说参数数组 params[0]

    谢谢 迪帕克

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多