如题,比如我有个包packageXXX下面有三个相关java文件(A是B的成员对象)
另外的一些包import  packageXXX.*
当A变更后,哪些需要重新编译呢。B应该要吧,而其他哪些引用packageXXX的包内文件呢,需要重新编译么?大家最好能告诉我一个原则,按照此原则即可判断任何的情况 ???

解决方案 »

  1.   

    不需要,哪个类改了你编译哪个就行了,虚拟机是动态地加载类的,也就是说A虽然是B的成员对象,但是A的字节码并没有保存在B中,而是执行到需要用到A这个成员变量的时候,虚拟机就会去classpath下面找这个类文件并加载,如果这个A类已经被改动并编译,它加载的自然就是改动后的类了。至于同个包的类,都可能没关联,自然就更没必要了。原则就是改类文件哪个编译哪个,就这么简单,没改动的不需要重新编译。其实如果有IDE的话,根本不用考虑这个问题的,Eclipse会自动编译。
      

  2.   

    对于开发工具,你把工程clear下,自动就编译了!
      

  3.   

    ide保持既编译,当然请你选择自动编译。
      

  4.   


    不赞同,我觉得楼主的意思是说“必须”,而且假设B调用了A的方法,而A删掉了这个方法,调用B的时候会报错,这是没错,但是重点不是编译,而是你必须得去修改B中调用A的方法的代码,于是B这个类你也修改了,既然你修改了B和A两个类,自然两个类都需要重新编译,自然还是符合“修改谁编译谁”的原则,因为B的代码你不能不改,不是光靠编译不改B的代码就能解决的。
      

  5.   

    对于开发工具,你把工程clear下,自动就编译了!