1

私はまだスイングとソケットの両方を学んでいるので、我慢してください。学ぶために私はチャットクライアント/サーバーシステムを作っています。現在、私はクライアントに取り組んでいます。私のクラスは

プログラムの実行時にSocketManagerオブジェクトを設定しましたが、そのソケットを使用する必要がある場合は、からオブジェクトを取得するための適切な方法がわかりません。私が行っていることは完全に効果がなく、それを設定するためのより良い方法がありますか、それとも私が知らないクラスから私のオブジェクトを取得する方法がありますか?(コードに他の問題があることに気づきましたが、最初はソケットを機能させようとしているだけで、苦労しています。)MainActLissend a messageMainSocketManagerMain

4

2 に答える 2

1

いくつかのオプションがあります。

1)MainクラスにActLisオブジェクトがあり、MainのSocketManagerへの参照を渡します

public class Main
{
   public static void main(String[] args)
   {
       ActList        a = new ActList(...);
       SocketManager sm = new SocketManager(...);

       a.sendMessageWithSocket(sm); //here you pass Main's reference to SocketManager 
   }                                //object to the ActLis class for use
} 

2)ActLisクラスに、コンストラクターで設定されたSocketManagerオブジェクトへの参照を持たせます

public class ActLis
{
    private SocketManager sm;

    public ActLis(SocketManager sm)
    {
        this.sm = sm;
    }
}

これらはおそらくこれを行うための最も簡単な方法です。

于 2012-05-13T17:14:25.977 に答える
0

ハンターマクミレンに追加:

3)メインクラスをシングルトンにします。id estはそれの複数のインスタンスを許可しません(私があなたの目的を理解していれば、このクラスの複数のインスタンスは必要ありません)。したがって、このクラスの単一のインスタンスを作成し、その参照をその中のpublicstaticfinalフィールド。(もちろん、このクラスの外部からインスタンス化させないでください。

    public class Main
    {
        public static final Main instance = new Main(/*args*/);

        private Main(/*args*/)
        {
            //blah blah
        }
    }

このようにして、コード内のどこからでも問題なくSocketフィールドにフォームでアクセスできます。Main

于 2012-05-13T17:37:38.210 に答える