0

ここでは学習モードで、Jar ファイルをいじっています。これが可能かどうかはわかりません...

応答、要求、ルーターの 3 つの主要部分を持つアプリケーション (サーバー) があります。私のルーターは、もともとサーバー内のクラスでした。それから私はそれを引き出し、それを別の瓶にしました。うまくいきました。ここで、複数の Jar を作成し、メニュー コマンドに基づいてサーバーに 1 つを使用させたいと考えています。サーバーには、利用可能な 2 つの外部ライブラリ (つまり、Jar) があります (A と B)。それぞれがカスタム Router クラスです。

サーバーメニューに次のようなコードを書きたい:

Server:  "Which router do you want to use?"
User:  "A"
*Server uses A's Router.*

また

Server:  "Which router do you want to use?"
User:  "B"
*Server uses B's Router*

これが私のサーバーのrun()メソッドです...

複数のルーターに接続する前に:

public void run() {
    Request request = new Request();
    Router router = new Router();
    Response response = new Response();

    HashMap receivedRequest = request.get(Socket);
    byte[] builtResponse = router.getResponse(receivedRequest);
    response.send(Socket, builtResponse);
    Socket.close();
}

私の試み(しかしうまくいかない):

public void run() {
    Request request = new Request();
    Router router
    if "A"
      router = new A.Router(workingDirectory, publicDirectoryPath, routesFilePath, htAccessFilePath);
    else
      router = new B.Router(workingDirectory, publicDirectoryPath, routesFilePath, htAccessFilePath);
    Response response = new Response();

    HashMap receivedRequest = request.get(Socket);
    byte[] builtResponse = router.getResponse(receivedRequest);
    response.send(Socket, builtResponse);
    Socket.close();
}

問題は、「ルーター」変数を特定のタイプ (A ルーターまたは B ルーター) として宣言する必要があることです。インターフェイスを作成する場合、各 Jar にインターフェイスを実装する必要がありますが、それはできません。

これが可能かどうか疑問に思っていますか?

4

1 に答える 1

2

インターフェイスを作成する場合、各 Jar にインターフェイスを実装する必要がありますが、それはできません。

はい、できます。インターフェイスを公開する jar A と、インターフェイスの実装を持ち、インターフェイスの動作を処理する別の jar B を持つことができます。jar B は、動作する jar A の存在に依存することに注意してください。

于 2013-09-25T16:46:59.887 に答える