【问题标题】:What are these three dots in parameter types [duplicate]参数类型中的这三个点是什么[重复]
【发布时间】:2011-07-10 14:28:13
【问题描述】:

可能重复:
What is the ellipsis for in this method signature?

例如:protected void onProgressUpdate(Context... values)

【问题讨论】:

    标签: java


    【解决方案1】:

    一个字:varargs.

    最后一个参数的类型后面的三个句点表示最后一个参数可以作为数组作为参数序列传递。可变参数只能在最后的参数位置使用。

    【讨论】:

      【解决方案2】:

      它们被称为可变参数,是在 Java 5 中引入的。阅读http://download.oracle.com/javase/1.5.0/docs/guide/language/varargs.html 了解更多信息。

      简而言之,它允许将数组传递给方法而无需创建数组,就好像该方法采用可变数量的参数一样。在您的示例中,以下四个调用将是有效的:

      onProgressUpdate();
      onProgressUpdate(context1);
      onProgressUpdate(context1, context2, context3);
      onProgressUpdate(new Context[] {context1, context2});
      

      【讨论】:

        【解决方案3】:

        它是在 java 5 中引入的varargs。更多信息在Varargs

        【讨论】:

          【解决方案4】:

          三个点称为省略号。方法可以调用任意数量的 Context 类型的值。您也可以调用没有值的该方法。

          【讨论】:

            【解决方案5】:

            这意味着values 参数是Context 对象的可选数组。所以你可以通过以下方式调用“onProgressUpdate”函数:

            onProgressUpdate(); // values is an empty array.
            onProgressUpdate(new Context[] { new Context() }); // values has one item.
            onProgressUpdate(context1, context2); // values has two items.
            

            请参阅 Java 1.5 中引入的varargs 语言功能。

            【讨论】:

              【解决方案6】:

              这意味着你可以输入一个范围内的值:

              onProgessUpdate(c1,c2,c3);
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-03-16
                • 2013-07-11
                相关资源
                最近更新 更多