为了账号安全,请及时绑定邮箱和手机立即绑定

【java】一个项目有两个相同的类,会出问题么?

【java】一个项目有两个相同的类,会出问题么?

Cats萌萌 2019-04-17 18:15:21
是这样的,我现在有个A项目,A项目本身内部有一个类ClassA,但是ClassA是以jar方式引入的依赖,里面有个一个方法叫make()ClassA的包名是,com.make.util但是,A项目的另一个jar依赖里面有一个类ClassB,用到了ClassA的make方法,两个类我都没有方法改变现在的需求是,客户要求改变make的方法实现(返回值和入参不变)我的leader给我的建议是在项目中再新建一个和ClassA一样的类,就是包名,类名,方法名都一样姑且叫他ClassC,说是这样ClassB调用make方法的时候会用这个新的,这样是可行的么(背景:买了一个商用项目做二次开发,make方法是商用项目里依赖的东西,所以不能改,但是现在有这个需求)简单说:两个一模一样的类(包名相同,类名相同,方法名相同,实现不同)一个在maven的依赖里面,一个是在当前项目里面新写的,那么底层程序引入这个类,实际上用的是那个?=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-经过自己测试,总是会用自己新建的那个类
查看完整描述

5 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

jvm 在判断是否是重复类是根据这个类是由哪个类加载器加载来判断,
理论上来说你这样做没有问题,因为你依赖的jar包中的ClassA 和你自己创建的ClassA是由不同的类加载器加载的

查看完整回答
反对 回复 2019-05-16
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

新建类导包时会让你选择哪个包下的那个类, 所以说市面上那么多重复类名都不存在问题,你这才哪到哪啊!


查看完整回答
反对 回复 2019-05-16
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

理论上不会,在项目引入包的时候就已经包含很多类了,但是我们创建自己的类时,基本没有重名提醒之类的,正如楼上所说的跟类加载器有关,同一工作域下倒也不太可能出现相同的类。创建时就会有警告吧


查看完整回答
反对 回复 2019-05-16
?
温温酱

TA贡献1752条经验 获得超4个赞

不会呀,只要前面的包名不一样就行了。例如 com.demo.util.HelloDemo 和 com.demo.model.HelloDemo 是两个类来的。


查看完整回答
反对 回复 2019-05-16
  • 5 回答
  • 0 关注
  • 1307 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信