ここでは学習モードで、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 にインターフェイスを実装する必要がありますが、それはできません。
これが可能かどうか疑問に思っていますか?