java 覆盖 jar 包的 类_覆盖第三方jar包中的某一个类。妙!!

在我们日常的开发中,经常需要使用第三方的jar包,但是很多时候总是会发现第三方的jar包中的某一个类,有问题,但是又无法继承,因为你继承后 变成了你自己的,jar包中 调用的 还是 他自己内部包含的,如何能让 jar包中调用的类就是我们自己的呢,就是覆盖jar包中的某一个类。

需求:京东的jar包中的 有一个类写错了,京东也不更新他的SDK,且他的SDK没有源码,这个时候的解决方案是:

1. 找到错误的类,然后反编译拿到这个类的源码。

2.在我们自己的项目中的src-java 目录下,新建一个 与他jar包中 同名的类,举例:

package com.jd.open.api.sdk.internal.parser;

20200623131551825697.png

这样 就可以修改 这个 JsonParser类 纠正他的错误,同时其他地方不做任何改变。外部第三方的 sdk调用这个类的时候,实际上是调用我们自己修改过的,因为优先级的问题,

class目录下的类 优先级 大于 lib下的类。这点设计的是秒啊!!!。

20200623131551957524.png

3.然后再打包成 root.war 就可以了。

=============================================================================================

以下是我自己的测试:

1.common.jar里有一个 ApiResponse类

2.在另一个oauth模块里 再次建立一模一样的包路径的 ApiResponse类

3.在使用 ApiResponse类的时候 会发现他是优先 oauth里 我们自己新建的

20200623131552018067.png

20200623131552109858.png

20200623131552182119.png

20200623131552243639.png

20200623131552297346.png

20200623131552350077.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值