Java是源文件或二进制文件的导入关键字吗?
我知道我可以使用import语句在我的
Java项目中包含一个类或一组类.
例如,导入java.io.utils.* import(即可在我的Java程序中使用)java.io.utils包中的所有类. 我的问题是,是否需要编译导入包中的类?或者包也可以包含未编译的Java文件?如果它可以是,我们何时可以使用类文件,何时可以使用Java文件? 解决方法
导入只是意味着“通过简单名称使导入的类可用” – 如果在任何地方使用完全限定名称,则可以完全删除导入.例如,它绝对不像C中的#include.
当你编译时,如果你试图引用未编译的代码,它将在那时被编译,假设编译器可以猜测在哪里找到源代码.结果从不引用未编译的代码,因为编译器需要知道每种类型公开的内容. 作为完整示例,构造以下文件结构: // src/foo/A.java package foo; import bar.*; public class A { public static void main(String[] args) { B.sayHello(); } } // src/bar/B.java package bar; public class B { public static void sayHello() { System.out.println("Hello"); } } 然后在src目录中运行: javac foo/A.java 这将自动编译bar / B.java – 但不会编译任何其他未引用的代码(可能是传递的). 我强烈建议不要使用这种“按需编译”行为 – 如果你编译依赖于B类的A类,它将在第一次编译B,但之后如果你改变B并重新编译A,则编译器赢了’重新编译B.我会将您的代码组织到适当的项目中,并始终一次重新编译一个完整的项目,将项目的输出目录添加到依赖于它的项目的类路径中,而不是允许编译一个项目来重新编译另一个项目的位一经请求. (请注意,这并不是说许多IDE支持的渐进式编译……这是一个相当不同的问题,假设它已经正确实现,这很好.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |