Java中的进口

Und*_*Dog 0 java

我已经读过,与C/C++不同,当我们"导入"包时,它们实际上并没有被添加(它们被引用而不是嵌入)到类文件中.

这有什么性能影响?

我很好奇可能会因为引用的数据(来自包)在.class本身中不可用而产生的开销(调用引用的包等).

或者开销非常小?

Jas*_*n C 5

没有性能命中.它只影响编译器解析类型的方式; 对生成的字节代码或运行时可用的信息没有影响.它几乎完全等同using [namespace]于C++(其中包类似于命名空间).

与C++一样,您也可以使用其包完全限定类型而不是导入它.

C++:

Something::Whatever x = ...;
// or
using namespace Something;
Whatever x = ...;
Run Code Online (Sandbox Code Playgroud)

Java的:

com.something.Whatever x = ...;
// or
import com.something.*;
Whatever x = ...;
Run Code Online (Sandbox Code Playgroud)

您可以(也应该)导入特定类型:

C++:

using Something::Whatever;
Run Code Online (Sandbox Code Playgroud)

Java的:

import com.something.Whatever;
Run Code Online (Sandbox Code Playgroud)

与C++一样,同一个包中的类可以相互引用,而无需限定包名.

请注意,与C++不同using namespace,它import必须位于文件的顶部.另外,包名称直接反映了源相对于类路径的目录结构(路径分隔符用点替换); 因为类可以在Java中动态加载,所以包名称还指定了类加载器在文件系统中查找类的位置.

另外,选择尼特,C中没有这样的概念.