【发布时间】:2014-06-08 14:34:07
【问题描述】:
假设我有一个类似的代码
public class HelloWorld {
public static String method1(String[] array){return ""+array.length;}
public static String method2(String... array){return ""+array.length;}
public static void main(String args[]) {
System.out.println(method1(new String[]{"test"})); //allowed
//System.out.println(method1("test")); Not allowed
System.out.println(method2(new String[]{"test"})); //allowed
System.out.println(method2("test")); //allowed
}
}
当我做javap HelloWorld
C:\Users\athakur\JavaProjectWorkspace\HelloWorld\bin\test>javap HelloWorld
Compiled from "HelloWorld.java"
public class test.HelloWorld extends java.lang.Object{
public test.HelloWorld();
public static java.lang.String method1(java.lang.String[]);
public static java.lang.String method2(java.lang.String[]);
public static void main(java.lang.String[]);
}
所以根据类文件 method1 和 method2 采用相同的数组参数。那为什么他们可以接受的输入不同呢?
like method1 不能接受简单的字符串输入,而 var arg 可以接受可变字符串输入以及数组?
【问题讨论】:
-
@Downvoter 你能提供你反对的理由吗?
标签: java arrays variadic-functions javap