A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘佳 中级黑马   /  2012-9-10 08:49  /  2687 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘佳 于 2012-9-11 17:24 编辑

用EditPlus在CMD编译运行都没有错,但在Eclipse下面编译提示:“The type Worker is already defined”,是不是因为同一个包下面另外一个Class文件中也包含有Worker类的缘故呢?
如果是这样,但在不同类中的那两个Worker类里面的方法并不一样,我都需要使用,而且也不想换掉其中任何一个的名字,请问有什么好的方法可以解决吗?

3 个回复

倒序浏览
恩。是编译出来两个worker.class文件冲突了。
你可以将其中一个worker类方法写成内部类,通过调用内部类调用里面的方法。
new Person().new Worker()
也可也将两个类放不同的包下面,通过包名调用。
pack1 worker1.class
pack2 worker2.class
import pack1.worker1
import pack2.worker2
pack1.worker1 w  = new pakc1.worker1();
回复 使用道具 举报
同一个包下不能有两个同类名的class,不管是在同一class文件中还是不同的class文件中,效果都一样。有两种解决办法:一个是在同包下改名。一个是放在不同包中,用时以-包名加类名-来区分使用。
回复 使用道具 举报
用cmd编译执行的时候,你先编译第一个,执行第一个,结果正确;你再编译第二个,执行第二个,结果正确。那是因为你第二个编译时,生成的同名的class把第一个覆盖了,所以第二个执行也对。这时,在你覆盖了第一个同名class后,你再运行第一个程序,不会出错,结果也会不同。

为了避免这种情况,Eclipse中不允许在一个包中出现同名的类。

明白否?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马