我现在正在与其他人一起在grails项目中工作。我必须编写一些Java类。但是我需要访问使用groovy创建的可搜索对象。看来,该对象必须放在默认包中。
在J2SE 1.4之前,你可以使用以下语法从默认包中导入类:
import Unfinished;
这是不再允许。因此,要从打包的类中访问默认的包类,需要将默认的包类移动到自己的包中。
如果你可以访问groovy生成的源,则需要进行一些后期处理,以将文件移动到专用包中,并在其开始处添加此“ package”指令。
2014年更新:针对JDK7和JDK8的bug 6975015描述了甚至更严格的禁止从未命名包中导入的规定。
的TypeName必须是类的类型,接口类型,枚举类型,或注释类型的规范名称。
该类型必须是命名包的成员,或者是其最外面的词法包围类型是命名包的成员的类型的成员,否则会发生编译时错误。
安德烈亚斯指出的评论:
“为什么[默认程序包]首先出现?设计错误?”
不,这是故意的。
JLS 7.4.2。未命名的软件包说:“ Java SE平台提供的未命名软件包主要是为了在开发小型或临时应用程序或刚开始开发时提供方便。”
问题内容: 我正在使用Eclipse 3.5,并且已经创建了一个具有一些包结构以及默认包的项目。我在默认包中有一个类-Calculations.java,并且我想在任何包中使用该类(例如在中)。当我尝试使用默认软件包中的类时,它给了我一个编译器错误。无法识别默认程序包中的类。问题出在哪里? 我不能将我的课程放在其他任何包中。此类具有一些在Delphi中实现的本机方法。如果我将该类放在任何文件夹中,
我编写了一个小的java程序,在Windows8中使用NetBeans读取文件并进行字符串匹配。但当我在ubuntu上使用terminal编译时,出现了以下消息。在ubuntu中是否有缺省的包,用于错误中的以下包。
问题内容: 我在Entities程序包中有类,但是我仍然想运行默认程序包中的导入内容…我该怎么做? 问题答案: 你不知道 抱歉。 尽管我引用了另一个答案,但是您可以查看ORACLE参考,该参考指出了预期的行为。 我建议将您的东西移动到命名包中。 如果您绝对不能重构,则可以尝试使用反射来访问它。再次,检查上面链接的答案。
问题内容: 如果我没有明确声明,方法或实例变量的默认访问修饰符是什么? 例如: 此构造函数的访问修饰符是受保护的还是打包的?同一包(即)中的其他类可以调用此构造函数吗? 问题答案: 如果一个类没有修饰符(默认值,也称为),则它仅在其自己的包中可见(包被命名为相关类的组,你将在以后的课程中对其进行了解。) 在,你也可以像顶级类一样使用修饰符或(),并且含义相同。
问题内容: 我刚开始读一本Java书籍,就纳闷了。如果未指定,则哪个访问说明符是默认的? 问题答案: 默认可见性称为“ package-private”(尽管您不能显式使用此属性),这意味着可以从该类所属的同一包内部访问该字段。 正如mdma指出的那样,接口成员的情况并非如此,其默认值为“ public”。
我是Java和Eclipse新手。 我试图在代码中导入外部类文件。我右键点击项目src- 接下来我拉上所有的拉链。将类文件放在zip文件夹中,并作为外部JAR添加,通过这样做,所有类文件都显示在默认包、引用库下,但我仍然无法将类文件导入到代码中。 如何重命名默认包,以便我可以访问和导入类文件? 通过右键单击类,在引用库的默认包下,没有重构和移动的选项。