Java包内引用外部类:Maven项目类实例化问题咨询
解决方案:无需移入GUI包也能创建ClientConnection实例
当然可以!问题的核心在于Java的类访问权限和包导入规则,下面分两种情况给你具体解决办法:
情况1:ClientConnection是public类
如果你的ClientConnection类已经用public修饰(比如public class ClientConnection { ... }),那只需要在MainWindow类的顶部添加对应的导入语句就行:
- 如果
ClientConnection没有包声明(直接放在src/main/java根目录下),导入语句是:import ClientConnection; - 之后你就能在
MainWindow里正常创建实例了:ClientConnection conn = new ClientConnection();
情况2:ClientConnection是默认访问权限(无public修饰)
这种情况下Java默认限制只有同一个包的类能访问它,这时候有两个可行方案:
- 推荐方案:给
ClientConnection加上public修饰符,然后按照上面的方法导入(如果它有包的话记得导入对应包路径)。这是最符合Java封装规范的做法。 - 不推荐的临时方案:用反射强行创建实例(但会破坏封装,不建议在生产代码中使用),示例代码大概是这样:
try { Class<?> connClass = Class.forName("ClientConnection"); Object connInstance = connClass.getDeclaredConstructor().newInstance(); // 如果需要调用方法,也得用反射 } catch (Exception e) { e.printStackTrace(); }
另外补充个小建议:Maven项目里最好不要把类直接放在根目录下,给ClientConnection分配一个合适的包(比如com.yourproject.network),然后用import com.yourproject.network.ClientConnection;导入,这样代码结构会更清晰。
内容的提问来源于stack exchange,提问作者Arryyyy
相关产品推荐
相关产品推荐

