我现在正在与其他人一起在grails项目中工作。我必须编写一些Java类。但是我需要访问使用groovy创建的可搜索对象。看来,该对象必须放在默认包中。
在J2SE 1.4之前,你可以使用以下语法从默认包中导入类:
import Unfinished;
这是不再允许。因此,要从打包的类中访问默认的包类,需要将默认的包类移动到自己的包中。
如果你可以访问groovy生成的源,则需要进行一些后期处理,以将文件移动到专用包中,并在其开始处添加此“ package”指令。
2014年更新:针对JDK7和JDK8的bug 6975015描述了甚至更严格的禁止从未命名包中导入的规定。
的TypeName必须是类的类型,接口类型,枚举类型,或注释类型的规范名称。 该类型必须是命名包的成员,或者是其最外面的词法包围类型是命名包的成员的类型的成员,否则会发生编译时错误。
安德烈亚斯指出的评论:
“为什么[默认程序包]首先出现?设计错误?”
不,这是故意的。 JLS 7.4.2。未命名的软件包说:“ Java SE平台提供的未命名软件包主要是为了在开发小型或临时应用程序或刚开始开发时提供方便。”