是否可以在Java中导入默认包中的类?如果是这样,语法是什么?例如,如果你有
package foo.bar;
public class SomeClass {
// ...
在一个文件中,您可以写
package baz.fonz;
import foo.bar.SomeClass;
public class AnotherClass {
SomeClass sc = new SomeClass();
// ...
在另一个文件中。但是,如果SomeClass.java不包含包声明呢?您如何在SomeClass
中引用AnotherClass
?
答案 0 :(得分:97)
答案 1 :(得分:33)
访问默认包中的类的唯一方法是从默认包中的另一个类。在这种情况下,不要费心import
它,只需直接引用它。
答案 2 :(得分:12)
那是不可能的。
另一种方法是使用反射:
Class.forName("SomeClass").getMethod("someMethod").invoke(null);
答案 3 :(得分:3)
这根本不是编译错误!您只能将默认包导入默认包类。
如果您对另一个包执行此操作,那么它将是编译错误。
答案 4 :(得分:1)
正如其他人所说,这是不好的做法,但是如果你没有选择,因为你需要与使用默认包的第三方库集成,那么你可以在默认包中创建自己的类并以这种方式访问其他类。默认包中的类基本上共享一个命名空间,因此即使它位于单独的JAR文件中,您也可以访问另一个类。只需确保JAR文件位于类路径中。
如果您的类不在默认包中,则此技巧不起作用。