在JAVA项目里用到了很多第三方开源的JAR包,有些时候发现某些功能不太适合自己的项目,就想改写其中的一些类或者方法,这种情况下我该怎么做呢?比如我要改写A类,是不是先把JAR解压缩,自己建个A类,路径包名都和JAR包的A类一摸一样,然后编译成CLASS文件替换JAR包的A.LASS。最后在打成JAR包?或者直接在本项目中直接覆盖JAR包的A类?这样的话,我自己的A类的路径啦,包名了,是不是都要和JAR包的A类一摸一样?各位大哥如果要是改写源码,是怎么做的?
调试欢乐多
A调用了B,B调用了C,我想修改B,怎么做呢
是不是在本地直接覆盖B?这样源码里的A就能直接找到本地的?而不是原来的?
如果A中有个setB方法,可以写个类去 extends B, 否则
如楼上所说: 改完B JAR包winrar打开 覆盖B.class 就行了
说下原因:
1.如果项目中确定要使用第三方的jar包,那么表示你们的需求是总体一致的,这时候如果满足不了你的要求,那可以写自己的继承类扩展其功能,却不要改写其源码。
2.如果是一个流行的第三方jar包,那么在以后的维护过程中(维护人员不是原班开发人员),那么他们对这个jar包的使用还是按照原有的使用方式进行,却不知道里面的方法已经被别人修改过,跟API中的根本不是一样的,这样会造成非常大的不便。
原本的代码有两个缺点1、不支持中文。2、存在严重的内存泄露
这个时候我就没必要去通过继承去扩展这个功能类了,直接在原来的基础上做了修改
我的意思是做后期维护的时候 会对维护人员造成误导~~因为官方API的使用方式跟你修改后的使用方式是不同的,除非项目中有详细的说明文档,通知维护人员此方法已经被重写了,不然这是有不可预知风险的。