对package的理解

王朝java/jsp·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

初学java的时候对它的包机制总是懵懵懂懂的,也经常因为对包的理解不当而出现一些莫名其妙的错误,下面简单总结一下偶在java学习过程中对于包的理解和认识.,不当之处,还请指正.

首先,建立目录D:\Test,在下面新建一个很简单的java文件,First.java;

package zhukai;

/**

this is a test

@author zhukai

@version 1.1

*/

public class First{

/** static mothod

@param args an array

*/

public static void main(String args[]){

System.out.println("Test");

}

}

编译之D:\Test>javac First.java

运行D:\Test>java First,不出意外的话会出现如下的错误:

Exception in thread "main"java.lang.NoClassDefFoundError: First (wrong name: zhukai/First),解决办法如下:在Test目录下面新建目录zhukai,然后把刚才产生的class文件移过去,运行D:\Test>java zhukai.First,运行成功,输出"Test".(注意:这个时候即使你进入/zhukai运行java First也会报错).当然你也可以使用javac的-d参数来自动生成package目录,两种方法的效果是一样的.

这时可能就有人要问了,不要那个package不就得了,省的这么麻烦.我们首先看这样一种情况,在一个BBS的web应用程序中,经常涉及到删除帖子的操作,而不的角色所拥有的权利是不一样的.比如说,普通用户只能删除自己的帖子,而斑竹则可以删除该版面上的任何一个帖子.对于编写javabean的程序员而言,可能倾向于把执行这两个操作的java文件都明明为delete.java,这个时候就会出现明明冲突的问题,而这也是为什么会出现package的原因了.package出现的初衷就是为了保证类名的唯一性.在上面的情况中,我们就可以写一个admin.delete和一个user.delete来避免命名的冲突.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航