为什么这个java类没有编译

时间:2014-07-23 18:52:19

标签: java variadic-functions

为什么下面的java代码编译会导致错误?我正在使用java 8,如果这很重要。

public class SimpleTest {

      private static boolean isPresent(int []... arrays, int number){

          boolean isPresent = true;

          for(int i=0;i<arrays.length;i++){
              //isPresent = doBinarySearch(arrays[i], number);
              if(!isPresent){
                  break;
              }
          }

          return isPresent;
      }    
}

这是我得到的错误:

SimpleTest.java:3: error: ')' expected
  private static boolean isPresent(int []... arrays, String number){
                                                   ^
SimpleTest.java:3: error: ';' expected
  private static boolean isPresent(int []... arrays, String number){
                                                                  ^
2 errors

2 个答案:

答案 0 :(得分:4)

Varargs只能声明为最后一个参数。

  

您可以使用名为varargs的构造来传递任意数量的构造   方法的值。当你不知道有多少时,你会使用varargs   特定类型的参数将传递给该方法。这是一个   手动创建数组的快捷方式。

     

要使用varargs,请按照最后一个参数的类型进行操作   省略号(三个点,...),然后是空格和参数名称。该   然后可以使用任意数量的参数调用方法,包括   无。

Source

答案 1 :(得分:-3)

这应该有效:

private static boolean isPresent(int []arrays, int number) {
...
}