0

私はこのコードを研究しています。これは、いくつかのパラメーターを持つコンストラクターです。最後のパラメータの宣言...これはどういう意味ですか?

    /**
 * 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();
}
4

2 に答える 2

6

これは varargs と呼ばれます。詳細については、こちらを参照してくださいhttp://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html

最後のパラメーターの型の後の 3 つのピリオドは、最後の引数が配列または一連の引数として渡される可能性があることを示します。可変引数は、最後の引数の位置でのみ使用できます。

この場合のコードでわかるように、これは配列です。

于 2013-05-14T10:10:09.197 に答える
3

パラメータ:

final InetSocketAddress... nodeAddresses

可変引数を意味します。関数のパラメーターと同じデータ型の 1 つ以上の変数を取ることができます。

参照: http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html

于 2013-05-14T10:10:56.223 に答える