知识大全 Java包导入机制的研究与解析
Posted 类型
篇首语:万事须己运,他得非我贤。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java包导入机制的研究与解析相关的知识,希望对你有一定的参考价值。
Java包导入机制的研究与解析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
java中有两种包的导入机制 总结如下
单类型导入(single type import) 例如import java io File;
按需类型导入(type import on demand) 例如 import java io *;
关于这两种导入类型大家各有所爱 众说纷纭 这里分析一下这两种导入类型的大致工作原理供大家参考
单类型导入比较好理解 仅仅导入一个public类或者接口 而对于按需类型导入 有人误解为导入一个包下的所有类 其实不然 看名字就知道 他只会按需导入 也就是说它并非导入整个包 而仅仅导入当前类需要使用的类
既然如此是不是就可以放心的使用按需类型导入呢?非也 非也 因为单类型导入和按需类型导入对类文件的定位算法是不一样的 java编译器会从启动目录(bootstrap) 扩展目录(extension)和用户类路径下去定位需要导入的类 而这些目录进仅仅是给出了类的顶层目录 编译器的类文件定位方法大致可以理解为如下公式
顶层路径名 \\ 包名 \\ 文件名 class = 绝对路径
对于单类型导入很简单 因为包明和文件名都已经确定 所以可以一次性查找定位
对于按需类型导入则比较复杂 编译器会把包名和文件名进行排列组合 然后对所有的可能性进行类文件查找定位 例如
package ; import java io *; import java util *;
当你的类文件中用到了File类 那么可能出现File类的地方如下
File \\\\ File类属于无名包 就是说File类没有package语句 编译器会首先搜索无名包
File \\\\ File类属于当前包
java lang File \\\\编译器会自动导入java lang包
java io File
java util File
需要注意的地方就是 编译器找到java io File类之后并不会停止下一步的寻找 而要把所有的可能性都查找完以确定是否有类导入冲突 假设此时的顶层路径有三个 那么编译器就会进行 * = 次查找
注意 如果在查找完成后 编译器发现了两个同名的类 那么就会报错 要删除你不用的那个类 然后再编译
了解以上原理之后 我们可以得出这样的结论 按需类型导入是绝对不会降低Java代码的执行效率的 但会影响到Java代码的编译速度
查看JDK的源代码就知道SUN的软件工程师一般不会使用按需类型导入 因为使用单类型导入至少有以下两点好处
提高编译速度
避免命名冲突 (例如 当你import java awt *;import java util *后 使用List的时候编译器将会出编译错误)
cha138/Article/program/Java/hx/201311/25713相关参考
Java绘图机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! JAVA的绘图功能非常丰富绘图包
Java反射机制深入研究 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java反射是Java语
Java中异常机制的深入研究 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 由于本文旨在探讨Ja
在这个网址下载一个调用ssh和scp命令的jar包 然后就可以写程序了将上面的jar包导入MyEclipse下面是一个类的实例代码 packagehh; importjavaioBuffer
知识大全 line camera表情包如何导入line camera使用
linecamera表情包如何导入linecamera使用没有那种导入功能的,毕竟没有真的购买,下载来的贴图可以通过“剪切”来实现贴图的功能。将下载来的贴图解压到手机,编辑图片时,点击下方贴图栏、贴图
Java1.5中新的静态导入特性 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 要导入一个类或接
实现JS脚本导入JAVA类包 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java堆栈溢出的机制与原理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java堆栈溢出的出
浅析Java与C#的事件处理机制(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java与
知识大全 Java的ClassLoader与Package机制
Java的ClassLoader与Package机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!