在Java中使用默认包导入类的语法是什么?

时间:2010-01-08 19:31:03

标签: java syntax import

是否可以在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

5 个答案:

答案 0 :(得分:97)

您无法从默认包中导入类。除了非常小的示例程序之外,您应该避免使用默认包。

来自Java language specification

  

这是一个编译   从中导入类型的时间错误   未命名的包裹。

答案 1 :(得分:33)

访问默认包中的类的唯一方法是从默认包中的另一个类。在这种情况下,不要费心import它,只需直接引用它。

答案 2 :(得分:12)

那是不可能的。

另一种方法是使用反射:

 Class.forName("SomeClass").getMethod("someMethod").invoke(null);

答案 3 :(得分:3)

这根本不是编译错误!您只能将默认包导入默认包类。

如果您对另一个包执行此操作,那么它将是编译错误。

答案 4 :(得分:1)

正如其他人所说,这是不好的做法,但是如果你没有选择,因为你需要与使用默认包的第三方库集成,那么你可以在默认包中创建自己的类并以这种方式访问​​其他类。默认包中的类基本上共享一个命名空间,因此即使它位于单独的JAR文件中,您也可以访问另一个类。只需确保JAR文件位于类路径中。

如果您的类不在默认包中,则此技巧不起作用。