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

这个问题已经在这里有了答案:

  • 如何访问默认包中的java类?                                     4个答案

是否可以使用默认包中的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

Pops asked 2020-01-24T10:20:18Z
5个解决方案
104 votes

您不能从默认包中导入类。 除了很小的示例程序外,您应该避免使用默认程序包。

根据Java语言规范:

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

Dan Dyer answered 2020-01-24T10:20:48Z
34 votes

访问默认程序包中的类的唯一方法是从默认程序包中的另一个类。 在这种情况下,请勿打扰import,只需直接引用即可。

Dan answered 2020-01-24T10:21:08Z
13 votes

那不可能

另一种方法是使用反射:

 Class.forName("SomeClass").getMethod("someMethod").invoke(null);
OscarRyz answered 2020-01-24T10:21:32Z
3 votes

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

如果您对另一个软件包这样做,那么它将是编译错误。

vishal rajput answered 2020-01-24T10:21:57Z
2 votes

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

如果您的班级不在默认程序包中,则此技巧不起作用。

Rob H answered 2020-01-24T10:22:22Z
translate from https://stackoverflow.com:/questions/2030148/whats-the-syntax-to-import-a-class-in-a-default-package-in-java