java - java中的main方法为什么接受无效的字符串参数

标签 java string program-entry-point variadic-functions

我使用 public static void main(String arg[]) 创建了一个 Java 应用程序 public static void main(String[] arg)

但是昨天我发现,如果我使用 public static void main(String... args) 编译程序,这也完全可以正常工作。 为什么?

最佳答案

这是因为String...将被转换为String[]

根据jls §8.4.1

Invocations of a variable arity method may contain more actual argument expressions than formal parameters. All the actual argument expressions that do not correspond to the formal parameters preceding the variable arity parameter will be evaluated and the results stored into an array that will be passed to the method invocation.

在 Java 中声明 varargs 是一个编译时错误,如下所示:

String... abc={"abc","def"};

这是因为 varargs 可用作方法签名中的最后一个参数,如 jls 中所述。 , varargs 将被评估,结果将存储在数组中,然后传递给方法

关于java - java中的main方法为什么接受无效的字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23487376/

相关文章:

java - 如何将 if 语句设为 "declare"NaN?

java - 如何使用@SpringBootApplication和@Configuration、数据源

java - main方法带有类名和文件名

c++ - 清除输入缓冲区中的所有其他字符

java - OpenCL 脚本给出意想不到的结果

java - 当看不到 java 7 时,Jwrapper 因 java 7 invokedynamic 的类版本错误而失败

PHP 不允许在字符串日期中使用格式 d/m/Y

c++ - 在由换行符分隔的字符串中查找特定文本

java - 如何在 Java 中比较字符串?

c++ - 在主函数 c++ 中使用类时出现两个错误