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

Java中如何导入与当前类同名的外部类?

在Java中导入并使用与当前类同名的外部类

刚好碰到过类似的场景,这种情况Java语法是允许的,但有个核心优先级规则得注意:当导入的类和当前类同名时,当前类的名称会直接覆盖导入的类。也就是说,你在com.version2.Sample里直接写Sample,编译器默认会解析成当前包下的com.version2.Sample,而非你导入的com.version1.Sample。

那怎么调用到导入的那个同名类呢?其实很简单,直接用它的全限定类名(包名+类名)来明确指定就行。我给你写个完整的示例:

首先是com.version1.Sample的代码:

package com.version1;

public class Sample {
    public void printInfo() {
        System.out.println("我是来自com.version1包的Sample类");
    }
}

然后是com.version2.Sample的代码,这里导入了同名类,但调用外部类时需要用全限定名:

package com.version2;

import com.version1.Sample; // 导入同名类,但当前类优先级更高

public class Sample {
    public void printInfo() {
        System.out.println("我是来自com.version2包的Sample类");
    }

    public static void main(String[] args) {
        // 直接写Sample,默认指向当前类
        Sample currentSample = new Sample();
        currentSample.printInfo(); // 输出:我是来自com.version2包的Sample类

        // 要调用导入的外部类,必须用全限定类名
        com.version1.Sample externalSample = new com.version1.Sample();
        externalSample.printInfo(); // 输出:我是来自com.version1包的Sample类

        // 如果是Java 10及以上版本,还能用var简化变量声明
        var anotherExternalSample = new com.version1.Sample();
        anotherExternalSample.printInfo();
    }
}

最后提个小建议:虽然语法上支持这种写法,但实际项目里尽量避免出现同名类的情况——毕竟会增加代码的理解成本,团队协作时很容易搞混。如果有条件,给其中一个类重命名或者调整包结构会更友好。

内容的提问来源于stack exchange,提问作者Devvie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 10:47:28