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

Pop*_*ops 51 java syntax import

是否可以在Java中导入默认包中的类?如果是这样,语法是什么?例如,如果你有

package foo.bar;

public class SomeClass {
    // ...
Run Code Online (Sandbox Code Playgroud)

在一个文件中,你可以写

package baz.fonz;

import foo.bar.SomeClass;

public class AnotherClass {
    SomeClass sc = new SomeClass();
    // ...
Run Code Online (Sandbox Code Playgroud)

在另一个文件中.但是,如果SomeClass.java不包含包声明呢?你将如何参考SomeClassAnotherClass

Dan*_*yer 105

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

Java语言规范:

从未命名的包导入类型是编译时错误.

  • 啊,很好的答案.简洁,正确,足够详细,没有多余的信息.我认为这是我在JLS的最后三个答案; 可能是时候阅读封面. (3认同)

Dan*_*Dan 35

访问默认包中的类的唯一方法是从默认包中的另一个类.在这种情况下,不要打扰import它,只需直接参考它.

  • 这实际上是问题的正确答案. (3认同)

Osc*_*Ryz 14

那是不可能的.

另一种方法是使用反射:

 Class.forName("SomeClass").getMethod("someMethod").invoke(null);
Run Code Online (Sandbox Code Playgroud)

  • @凯莉,你完全确定吗? (6认同)

Rob*_*b H 6

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

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