java - 不同包中的相同类名

标签 java package

同一个类可以存在于多个包中吗? 换句话说,我可以在 com.test.package1com.test.package2 中有 Foo.java 类吗?

更新

现在我从包 1 复制类并放入包 2,现在我正在创建该类的一个实例,我希望这个实例指向包 1 中存在的类,但目前它指向包 1 路径,我怎么能修改它?

哦,所以我不能做这样的事情:

Foo = new Foo() // pointing to Foo class in package 1
Foo = new Foo() // pointing to Foo class in package 2

最佳答案

是的,您可以在多个包中拥有两个同名的类。但是,您不能使用两个 import 语句将两个类导入到同一个文件中。如果您确实需要引用这两个类名,则必须完全限定其中一个类名。


例子:假设你有

pkg1/SomeClass.java

package pkg1;
public class SomeClass {
}

pkg2/SomeClass.java

package pkg2;
public class SomeClass {
}

Main.java

import pkg1.SomeClass;   // This will...
import pkg2.SomeClass;   // ...fail

public class Main {
    public static void main(String args[]) {
        new SomeClass();
    }
}

如果你尝试编译,你会得到:

$ javac Main.java
Main.java:2: pkg1.SomeClass is already defined in a single-type import
import pkg2.SomeClass;
^
1 error

然而确实编译:

import pkg1.SomeClass;

public class Main {

    public static void main(String args[]) {
        new SomeClass();
        new pkg2.SomeClass();   // <-- not imported.
    }
}

关于java - 不同包中的相同类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4055634/

相关文章:

package - 在 Ubuntu 17.10 上安装 OpenMPI

java - 如何在 Java 中将 L 附加到 long

java - 我们是否需要 Optional ifNotPresent 在链中间使用?

java - 绘制组件未被调用

java - 将数据插入数据库 - 为什么我使用 -1 而不是 0?

javascript - 在 npm 上发布 wasm 库的首选方式是什么?

java - 如何限制对 Eclipse Java 项目中的包的访问

r - 处理 R 中冲突的命名空间(不同包中的相同函数名): reset precedence of a package namespace

java - 如何给jni dll函数名添加前缀

java - Mockito Junit 测试 - “Wanted but not invoked; However there were other interactions with this mock” 错误