我正在研究这段代码,它是一个带有多个参数的构造函数。最后一个参数的声明用...是什么意思?
/**
* Public constructor.
* @param servicePort the service port
* @param nodeAddresses the node addresses
* @param sessionAware true if the server is aware of sessions, false otherwise
* @throws NullPointerException if the given socket-addresses array is null
* @throws IllegalArgumentException if the given service port is outside range [0, 0xFFFF],
* or the given socket-addresses array is empty
* @throws IOException if the given port is already in use, or cannot be bound
*/
public TcpSwitch(final int servicePort, final boolean sessionAware, final InetSocketAddress... nodeAddresses) throws IOException {
super();
if (nodeAddresses.length == 0) throw new IllegalArgumentException();
this.serviceSocket = new ServerSocket(servicePort);
this.executorService = Executors.newCachedThreadPool();
this.nodeAddresses = nodeAddresses;
this.sessionAware = sessionAware;
// start acceptor thread
final Thread thread = new Thread(this, "tcp-acceptor");
thread.setDaemon(true);
thread.start();
}
最佳答案
它叫做 varargs,查看这里了解更多 http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html
The three periods after the final parameter's type indicate that the final argument may be passed as an array or as a sequence of arguments. Varargs can be used only in the final argument position.
正如您在代码中看到的,在本例中它是一个数组。
关于Java-参数声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16540402/