对package的理解

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

        初学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来避免命名的冲突.

本文关键:对package的理解
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top