为什么#import Foundation.h在Objective-C中很普遍,但个人导入在Java中很常见

时间:2012-03-28 06:57:10

标签: java objective-c import header-files

从我所看到的,Android开发需要传统的Java样式导入每个单独的类/接口,而XCode中的建议模板导入文件,如Foundation和UIKit。 Obj-C和Java之间的编译器之间有什么区别,这使得这种大型导入在一个中可以正常,但在另一个中却不行?

要明确的是,我并不抱怨这在Java中不可用,我只是好奇为什么做导入java.util.*或创建某种导入很多的超级头文件会很糟糕的东西。

1 个答案:

答案 0 :(得分:2)

需要注意的一件重要事情是,编译任何给定Java类所需的唯一源代码是该类的源代码。

其他所有内容都只能以编译形式提供(即.class个文件)。这意味着单个.java文件始终是一个语法封闭的单元,不需要其他源代码来使编译器可解释。

这与C风格的语言如何处理外部依赖关系完全不同:它们需要类型和函数定义(以及宏和我现在可能忘记的一些事情),以便能够正确地解析和编译{ {1}}文件(当然某些 .c文件可能在语法上已关闭,但这不是通常的情况。)

在Java中包含一个巨大的.c文件的最接近的是使用.h导入来导入给定包的所有类:.*,但距离C / C ++ / Objective-C方式。

另外注意:import foo.bar.*在Java中可能比单个导入更少见,原因很简单:单个导入更明确,并且非常清楚使用哪些类和< / em>它们通常由您选择的IDE编写,因此这种选择甚至不会使Java代码更难编写。