多个包中是否可以存在相同的类?换句话说,我可以有dummy.java类com.test.package1和com.test.package2?
更新
现在我从package1复制了类并放入了包2,现在我正在创建该类的实例,我希望这个实例指向包1中的类,但是当前它指向package1路径,我该如何修改它?
哦,所以我做不了类似的事情:
Foo = new Foo() //pointing to 1 package Foo class
Foo = new Foo() // pointing to 2 package Foo class
Run Code Online (Sandbox Code Playgroud)
aio*_*obe 38
是的,您可以在多个包中拥有两个具有相同名称的类.但是,您不能使用两个import语句在同一文件中导入这两个类.如果你真的需要引用它们,你必须完全限定其中一个类名.
示例:假设您有
则pkg1/SomeClass.java
package pkg1;
public class SomeClass {
}
Run Code Online (Sandbox Code Playgroud)
则pkg2/SomeClass.java
package pkg2;
public class SomeClass {
}
Run Code Online (Sandbox Code Playgroud)
和Main.java
import pkg1.SomeClass; // This will...
import pkg2.SomeClass; // ...fail
public class Main {
public static void main(String args[]) {
new SomeClass();
}
}
Run Code Online (Sandbox Code Playgroud)
如果你尝试编译,你会得到:
$ javac Main.java
Main.java:2: pkg1.SomeClass is already defined in a single-type import
import pkg2.SomeClass;
^
1 error
Run Code Online (Sandbox Code Playgroud)
但是这会编译:
import pkg1.SomeClass;
public class Main {
public static void main(String args[]) {
new SomeClass();
new pkg2.SomeClass(); // <-- not imported.
}
}
Run Code Online (Sandbox Code Playgroud)
可以,但是如果在其他包中调用它们,则在源文件中都包含了两者时,您就需要区分它们。
对评论的回应:
com.test.package1.Foo myFoo = new com.test.package1.Foo();
com.test.package2.Foo myOtherFoo = new com.test.package2.Foo();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31961 次 |
| 最近记录: |