java - 使用java的字符串数组参数错误

标签 java

当我将 go 方法中的字符串数组参数从 String...y 更改为 String y[] 时,以下代码中出现错误。有人可以解释一下为什么吗?

public class scjp2 {
    public static void main(String[] args) {
        new scjp2().go( 1,"hi");
        new scjp2().go( 2,"hi", "world");
    }
    public void go( int x,String...y) {
        System.out.print(y[y.length - 1] + " ");
    }
}

有人可以解释为什么我需要将 String...y 参数作为方法中的最后一个参数

示例:

     public void go( int x,String...y) // correct way

     public void go( String...y,int x) // wrong way

最佳答案

更改 String...y 时出现错误至String y[]因为在 new scjp2().go( 2,"hi", "world");你没有传递一个数组。 new scjp2().go( 2,new String[]{"hi", "world"});可以使用这两种方法签名。

至于为什么 Varargs 参数必须是最后一个 - 它是一个可选参数,并且由于 Java 中传递值到方法参数的映射是按照顺序完成的,因此您将无法调用 new scjp2().go(1);如果String... y是第一个参数,因为 1 不是 String 。另一方面,new scjp2().go(1);当可选的 Varargs 参数是方法签名的最后一个参数时,工作得非常好。

关于java - 使用java的字符串数组参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34309273/

相关文章:

java - 从 Java 应用程序中执行 Pig

java - JUnit assertEquals for double with percentage delta

java - HashSet 输出不匹配 [JAVA]

Java数据字段封装newby问题

字符串数组上的 Java 字符串正则表达式以捕获嵌套数据

java - 易于在 Java 中访问的静态数据

java - 使用 Java 从 Apache FOP 1.1 获取 PDF 中的图像

java - 在SDN 5.0.0中创建neo4j sessionfactory

java - 显示图像列表时出现应用程序小部件问题

java - 如何在多线程场景中使用自行生成的_id更新插入mongodb文档/记录