Java 我是否可以基于菜单命令在两个不同库中的公共类之间切换?
在这里的学习模式下,玩Jar文件。不确定这是否可能 我有一个包含3个主要部分的应用程序(服务器):响应、请求和路由器。我的路由器最初是服务器中的一个类。然后我把它拔出来,做成一个单独的罐子。让它起作用。现在我想制作多个jar,并让服务器基于菜单命令使用一个jar。服务器有两个可用的外部库(即JAR)(A和B)。每个都是一个自定义路由器类 我想在服务器菜单中编写如下代码:Java 我是否可以基于菜单命令在两个不同库中的公共类之间切换?,java,interface,jar,Java,Interface,Jar,在这里的学习模式下,玩Jar文件。不确定这是否可能 我有一个包含3个主要部分的应用程序(服务器):响应、请求和路由器。我的路由器最初是服务器中的一个类。然后我把它拔出来,做成一个单独的罐子。让它起作用。现在我想制作多个jar,并让服务器基于菜单命令使用一个jar。服务器有两个可用的外部库(即JAR)(A和B)。每个都是一个自定义路由器类 我想在服务器菜单中编写如下代码: Server: "Which router do you want to use?" User: "A" *Server
Server: "Which router do you want to use?"
User: "A"
*Server uses A's Router.*
或
这是我的Server 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();
}
我的尝试(但不起作用):
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();
}
问题是我的“router”变量必须声明为某种类型(a路由器或B路由器)。如果我制作一个接口,那么我必须在每个Jar中实现接口,而我不能这样做,对吗
想知道这是否可能
如果我制作一个接口,那么我必须在每个Jar中实现接口,而我不能这样做,对吗
是的,你能做到。您可以有一个公开接口的jar a和另一个拥有接口实现并处理接口行为的jar B。请注意,jar B取决于jar A是否存在才能工作。我很困惑。我的界面不需要在服务器中吗?如果它在服务器中,我如何在两个库(A和B)中引用它。我想我的问题是我应该把接口放在哪里?@Kelly接口应该放在最通用的地方,在那里可以通过其他库访问它们来实现它们,客户端也可以使用它们。如果您是在框架透视图中构建应用程序,那么最好在jar中添加接口。如果您构建的应用程序只是用作客户机(控制台、GUI、web、移动设备),那么请将这些接口放在主jar中。非常感谢。我现在明白了。