关于android:java中的“String …”是什么?

What is “String…” in java?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
varargs and the '…' argument
Java, 3 dots in parameters

我在Android的Java文件中看到了这个定义。它看起来就像字符串[]。它们不同吗?谢谢您。


varags。如果一个方法签名是method(Param param, String... x),它将采用一个Param类型的对象和任意数量的字符串对象。

如果有一些很酷的事情:

  • 没什么特别的。只是加糖阵列。因此,method(MyObject... o)method(MyObject[] o)相同。

  • vararg必须是参数列表中的最后一个参数。

  • 有件有趣的事咬了我一口。method(MyObject... o)可以称为method()而不存在编译错误。Java将内部的非ARG调用转换为EDCOX1×8。所以,要意识到这一点。


  • 它是将数组中的项作为参数写入的语法

    例如:

    1
    2
    3
     public String first (String... values) {
         return values[0];
     }

    然后可以使用first("4","2","5","67")调用此方法。

    javacompiler将自己创建一个参数数组。


    它是vararg,参数数目可变。在方法体中,您将其视为字符串[],但当您调用该方法时,可以选择提供字符串[],也可以简单地枚举值。

    1
    2
    3
    4
    5
    6
    7
    void foo(String... blah) { }

    void bar() {
       String[] a = {"hello","world" };
       foo(a);  // call with String[]
       foo("hello","world"); // or simply enumerate items
    }

    用Java 5介绍。


    它用于定义参数数目可变的方法。


    String是字符串类型。String[]是一个字符串数组。

    EDOCX1 11是一个名为省略号的语法糖,在Java 1.5中引入,取自C。它可以用于方法定义,实际上与数组只有一个不同。如果方法定义为:

    public void foo(String[] arg){}

    必须将数组传递给它:

    foo(new String[] {"a","b"});

    如果方法定义为:

    public void foo(String arg){}

    你也可以叫它

    foo(new String[] {"a","b"});

    foo("a","b");