为什么我在这里得到一个编译警告(Java中的var args方法调用)?
- 论坛
- 为什么我在这里得到一个编译警告(Java中的var args方法调用)?
31 浏览
为什么我在这里得到一个编译警告(Java中的var args方法调用)?
源代码:
public class TestVarArgs { public void varArgsMethod(Object ... arr) { System.out.println(arr.getClass().getName()); for(Object o : arr) { System.out.println(o); } } public static void main(String[] args) { TestVarArgs tva = new TestVarArgs(); tva.varArgsMethod(args); } }
编译:
javac TestVarArgs.java
错误:
TestVarArgs.java:15: 警告: 非精确参数类型的变长参数方法的非变长参数调用; 为变长参数调用进行 java.lang.Object 的强制转换 为非变长参数调用进行 java.lang.Object[] 的强制转换以抑制此警告 tva.varArgsMethod(args); ^ 1 个警告
我使用的是 `javac 1.6.0_20`,代码的输出表明无论如何都进行了非变长参数调用。