在我们日常的开发中,经常需要使用第三方的jar包,但是很多时候总是会发现第三方的jar包中的某一个类,有问题,但是又无法继承,因为你继承后 变成了你自己的,jar包中 调用的 还是 他自己内部包含的,如何能让 jar包中调用的类就是我们自己的呢,就是覆盖jar包中的某一个类。
需求:京东的jar包中的 有一个类写错了,京东也不更新他的SDK,且他的SDK没有源码,这个时候的解决方案是:
1. 找到错误的类,然后反编译拿到这个类的源码。
2.在我们自己的项目中的src-java 目录下,新建一个 与他jar包中 同名的类,举例:
package com.jd.open.api.sdk.internal.parser;
这样 就可以修改 这个 JsonParser类 纠正他的错误,同时其他地方不做任何改变。外部第三方的 sdk调用这个类的时候,实际上是调用我们自己修改过的,因为优先级的问题,
class目录下的类 优先级 大于 lib下的类。这点设计的是秒啊!!!。
3.然后再打包成 root.war 就可以了。
=============================================================================================
以下是我自己的测试:
1.common.jar里有一个 ApiResponse类
2.在另一个oauth模块里 再次建立一模一样的包路径的 ApiResponse类
3.在使用 ApiResponse类的时候 会发现他是优先 oauth里 我们自己新建的
本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/p/13181409.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人