JAVA修改基类后,patch需要注意了

简介:

给产品打patch时,出现NoSuchFieldError问题,跟踪发现修改后基类,patch会存在问题:

1.  基类成员类型改变(权限:public / protected),子类需要重新编译,打patch的时候,需要把子类同时打入。否则子类访问该变量时,会出现NoSuchFieldError.

public class A {

        public HashMap<String, String> number = new HashMap<String, String>();

}

   public class B extends A{

    public static void main(String args[]){

        B b = new B();

         b.number = null;

    }

}

先编译ABjava –cp B 运行正常,然后修改A:

public class A {

        public Map<String, String> number = new HashMap<String, String>();

}

重新编译A,不编译Bjava –cp B 运行出现java.lang.NoSuchFieldError

2.  基类的方法类型改变(包括返回值,参数类型),子类需要重新编译,打patch的时候,需要把子类同时打入。否则子类访问该变量时,会出现NoSuchMethodError.(参数名改变没有关系,你懂的)

3.  基类的静态成员变量改变,如public static final String name,基类值改变,子类需要重新编译,打patch的时候,需要把子类同时打入。子类的该值的内容不变。目前没发现错误。(注意是常量类型)



本文转自 anranran 51CTO博客,原文链接:http://blog.51cto.com/guojuanjun/670300

相关文章
|
Java 测试技术 API
Java RESTful中的PATCH请求:局部更新与资源修改
在RESTful架构中,PATCH请求是一种用于局部更新已有资源的操作。PATCH请求允许客户端将部分数据发送到服务器,以便对资源进行局部修改,而不必替换整个资源。本文将引导您深入了解Java中使用PATCH请求构建RESTful API,探讨其特点、实现方式、用例以及在实际应用中的优势。
|
编解码 Java Maven
Java视频修改分辨率(附代码) | Java工具类
Java视频修改分辨率(附代码) | Java工具类
Java视频修改分辨率(附代码) | Java工具类
|
编解码 Java Maven
Java修改图片分辨率(附代码) | Java工具类
Java修改图片分辨率(附代码) | Java工具类
Java修改图片分辨率(附代码) | Java工具类
|
2月前
|
测试技术 API Android开发
《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)
【7月更文挑战第15天】这是关于自动化测试框架中Selenium API二次封装的教程总结。教程中介绍了如何设计一个支持不同浏览器测试的页面基类(BasePage),该基类包含了对Selenium方法的二次封装,如元素的输入、点击、清除等常用操作,以减少重复代码。此外,页面基类还提供了获取页面标题和URL的方法。
65 2
|
NoSQL Java 关系型数据库
java 操作 kudu—修改、删除操作 | 学习笔记
快速学习 java 操作 kudu—修改、删除操作
945 0
java 操作 kudu—修改、删除操作 | 学习笔记
|
Java Maven
【Java】【Maven】002 修改maven仓库的路径与配置阿里云镜像仓库
【Java】【Maven】002 修改maven仓库的路径与配置阿里云镜像仓库
611 0
【Java】【Maven】002 修改maven仓库的路径与配置阿里云镜像仓库
|
Java C++ Python
蓝桥杯官网 试题 PREV-106 历届真题 修改数组【第十届】【省赛】【研究生组】【C++】【C】【Java】【Python】四种解法
蓝桥杯官网 试题 PREV-106 历届真题 修改数组【第十届】【省赛】【研究生组】【C++】【C】【Java】【Python】四种解法
170 0
蓝桥杯官网 试题 PREV-106 历届真题 修改数组【第十届】【省赛】【研究生组】【C++】【C】【Java】【Python】四种解法
|
Java
java学习第十二天笔记-字符串230-修改逻辑
java学习第十二天笔记-字符串230-修改逻辑
65 0
java学习第十二天笔记-字符串230-修改逻辑
|
Java
java学习第九天笔记-方法172-复杂对象数组练习-修改
java学习第九天笔记-方法172-复杂对象数组练习-修改
52 0
java学习第九天笔记-方法172-复杂对象数组练习-修改
|
XML JavaScript Java
Java Web之JSP操作XML(XML的文档结构 语法和注释、dom4j的下载与配置 应用dom4j创建、解析和修改XML)
Java Web之JSP操作XML(XML的文档结构 语法和注释、dom4j的下载与配置 应用dom4j创建、解析和修改XML)
251 0
Java Web之JSP操作XML(XML的文档结构 语法和注释、dom4j的下载与配置 应用dom4j创建、解析和修改XML)