在Java中的默认包中导入类的语法是什么?
可能重复: 如何访问默认包中的Java类?
是否有可能在默认包中的Java中导入一个类? 如果是这样,语法是什么? 例如,如果你有
package foo.bar; public class SomeClass { // ...
在一个文件中,你可以写
package baz.fonz; import foo.bar.SomeClass; public class AnotherClass { SomeClass sc = new SomeClass(); // ...
在另一个文件中。 但是,如果SomeClass.java不包含包声明呢? 你会如何引用AnotherClass
SomeClass
?
您不能从默认包中导入类。 除了非常小的示例程序之外,您应该避免使用默认的程序包。
从Java语言规范 :
从未命名包中导入types是编译时错误。
访问默认包中的类的唯一方法是从默认包中的另一个类。 在这种情况下,不要麻烦import
它,直接引用它。
这是不可能的。
另一种方法是使用reflection:
Class.forName("SomeClass").getMethod("someMethod").invoke(null);
这完全不是编译错误! 您只能将默认包导入默认包类。
如果你这样做了另一个包,那么这将是一个编译错误。
正如其他人所说,这是不好的做法,但如果您没有select,因为您需要与使用默认包的第三方库集成,那么您可以在默认包中创build自己的类,并访问其他类那样。 默认包中的类基本上共享一个名称空间,所以即使它驻留在单独的JAR文件中,也可以访问其他类。 只要确保JAR文件在类path中。
如果你的类不在默认包中,这个技巧是行不通的。