有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用Java数组

/**
 * Testing Arrays
 * @author N002213F
 * @version 1.0
 */
public class JavaArrays {

    public void processNames(String[] arg) {
        //-- patented method, stop, do not read ;)
    }

    public void test() {

        // works fine
        String[] names1 = new String[] { "Jane", "John" };
        processNames(names1);

        // works fine, nothing here
        String[] names2 = { "Jane", "John" };
        processNames(names2);

        // works again, please procced
        processNames(new String[] { "Jane", "John" });

        // fails, why, are there any reasons?
        processNames({ "Jane", "John" });

        // fails, but i thought Java 5 [vargs][1] handles this
        processNames("Jane", "John");
    }
}

共 (3) 个答案

  1. # 1 楼答案

    processNames({ "Jane", "John" });
    

    This fails, why, are there any reasons?

    您没有指定类型。Java在这里不进行类型推断;它希望您指定这是一个字符串数组。对this question的回答也可能对此有所帮助

    processNames("Jane", "John"); 
    

    This fails too, but I thought Java 5 varargs handles this

    如果您想要varargs,那么您应该这样编写您的方法:

    public void processNames(String... arg)
    

    注意...而不是[]。仅仅接受数组并不能使您有权在该方法上使用varargs

  2. # 2 楼答案

    第三个调用是不正确的,因为您无法创建这样的数组,您可以像在第二个调用中一样创建数组。如果希望最终调用成功,则必须将processNames声明为varargs(see here)的接收方

  3. # 3 楼答案

    在最后一行:processNames(String ...args);必须这样写才能让varargs工作