1

Socket クラスを拡張する mysocket クラスがあります。

class MySocket extends Socket {
    public int id;
}

これで、ServerSocket の accept メソッドから取得したサブクラス インスタンス (Socket) ができました。この Socket インスタンスを使用して MySockey インスタンスを構築するにはどうすればよいですか?

4

3 に答える 3

1

どこかからa を取得するので、次のようなSocketラッパーを使用して a を追加することをお勧めします。id

public class SocketWrapper {
    private Socket socket;
    private int id;
    // getter, setter, ctors, ...
}
于 2013-02-14T17:34:09.503 に答える
0

Socketを拡張するのではなくラップするという推奨事項に同意します。ただし、拡張を続けることにした場合は、引数としてSocketをとるコンストラクターをサブクラスに追加してください。ソケットメソッドをそれに委任します。

于 2013-02-14T17:43:10.890 に答える
0

クラスのサブクラス化は、クラス自体に追加機能を追加する場合にのみ意味があります。あなたの場合、ソケットを使用したいだけのようです。@RCが提案したアプローチが正しいように。Socket クラスをサブクラス化するのではなく、Socket オブジェクトをインスタンス メンバーとして持つことができ、server.accept() の戻り値の型をそれに割り当てることができます。

お役に立てれば。

于 2013-02-14T17:47:30.997 に答える