这些要点代表什么?

时间:2015-06-29 14:56:01

标签: java eclipse

当我用Java编写构造函数时:

import java.io.IOException;
import java.io.OutputStream;

public class MultiOutputStream extends OutputStream{

    OutputStream[] oStream;

    public MultiOutputStream(OutputStream oStream) { 
        this.oStream = oStream;
        // TODO Auto-generated constructor stub
    }

    @Override
    public void write(int arg0) throws IOException {
        // TODO Auto-generated method stub

    }
}

Eclipse现在说:类型不匹配:无法从OutputStream转换为OutputStream [] 。所以Eclipse修正了我的构造函数:

import java.io.IOException;
import java.io.OutputStream;

public class MultiOutputStream extends OutputStream{

    OutputStream[] oStream;

    public MultiOutputStream(OutputStream... oStream) {
        this.oStream = oStream;
        // TODO Auto-generated constructor stub
    }

    @Override
    public void write(int arg0) throws IOException {
        // TODO Auto-generated method stub

    }

}

这些观点代表什么?

提前致谢!

3 个答案:

答案 0 :(得分:6)

他们被称为“varargs”,见http://docs.oracle.com/javase/7/docs/technotes/guides/language/varargs.html

  

最终参数类型后的三个句点表示   final参数可以作为数组或序列传递   参数。

答案 1 :(得分:3)

它是一种名为 varargs 的语法糖。

public void method(int... varargs) { }

您可以使用多个参数调用此方法,例如:method(3, 14),还有method(42)
这是使用不确定数量的参数处理方法的常用方法,例如String::format中使用的方法。

编译器会自动将参数收集到引擎盖后面的数组中。在此代码中,varargsint的数组,因此您可以轻松地遍历它。

public void method(int... varargs) { 
  for(int i=0; i < varargs.length; i++) {
    System.out.println("Argument n°"+i+" is "+varargs[i]);
  }
}

答案 2 :(得分:1)

这些点称为varargs。您可以阅读有关他们的更多信息here

总而言之,它们用于为该方法提供该类型的无限量参数。这样可以更轻松地访问和更清晰的代码。当你尝试使用它时,vararg就像一个数组。