You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:19:03