为什么我在这里得到一个编译警告(Java中的var args方法调用)?

31 浏览
0 Comments

为什么我在这里得到一个编译警告(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`,代码的输出表明无论如何都进行了非变长参数调用。

0