`
skzr.org
  • 浏览: 362771 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

答复: 再谈一个关于final的不一致编译的低级错误

    博客分类:
  • J2EE
 
阅读更多
tlde_ti 写道
我是觉得连依赖管理工具都不用的项目实在算不上 合格的 项目.
维护升级 隐患都非常多.

直接javac只能学习用,进一步说未来学习用也迟早要被 依赖管理自动编译 工具所替代。



这个你只是考虑了自己的一个web项目哦,如果是对外提供服务的lib呢?或者是进行二次开发。。。
这种情况恐怖的是你的jar已经存在很多客户端了。这个时候对常量值的修改将引入一个潜在的bug。。。

skzr.org 写道

tlde_ti 写道
skzr.org 写道
有个疑问,如果依赖关系:
A.jar <-- B.jar <-- C.jar
A: ConstantA.A_CODE=1
B: ConstantB.B_CODE=ConstantA.A_CODE
C: ConstantC.C_CODE=ConstantB.B_CODE

A改变了协议ConstantA.A_CODE=999
那是不是C就抓狂了......

这种情况下应该是B针对A的新版本jar包编译一个新的B,
然后C针对B 新的jar包编译一次.
毕竟这里B使用了A的新版本,应该使用新的A jar包编译一次才对.

这样情况下增量编译也不行了,要先clean才不会出问题。

 

确实存在这样的问题,如果做服务或者api需要非常小心的处理常量值。

  1. 提供常量时:接口定义的常量永远不要更改其值——无法绕过这个限制
  2. 提供常量时:类中定义的常量放在初始化块中初始化中进行初始化,而不是直接一个=完事——不会出现这个限制
  3. 使用常量时:外部的常量尽量不要再在内部定义另一个常量别名,如果非要定义采用第二条


来源 主题:再谈一个关于final的不一致编译的低级错误

分享到:
评论

相关推荐

    mapstruct-1.3.1.Final-API文档-中英对照版.zip

    赠送jar包:mapstruct-1.3.1.Final.jar; 赠送原API文档:mapstruct-1.3.1.Final-javadoc.jar; 赠送源代码:mapstruct-1.3.1.Final-sources.jar; 赠送Maven依赖信息文件:mapstruct-1.3.1.Final.pom; 包含翻译后...

    ActionScript 3.0编译器编译错误大全

    尝试扩展一个标记为`final`的类将引发此错误,因为`final`类不允许被继承。 ### 错误1026:构造函数缺失 每个类都必须至少有一个构造函数。如果类中没有显式声明构造函数,AS3将自动添加一个默认构造函数。然而,...

    AS3编译错误中文说明

    - **解释**:此错误表示尝试定义一个既是 `final` 又是 `virtual` 的函数,这是不被允许的。 - **解决办法**:选择其中一个属性,要么是 `final` 要么是 `virtual`。 #### 1030 必须指定变量参数数组的名称 - **...

    java 10大低级错误

    对于每一个方法,都应该添加适当的注释,包括但不限于方法的功能简介、参数含义等。 **正确示例**: ```java /** * 发送消息方法 */ public void sendMsg() { // 实现逻辑 } /** * 根据内容ID和产品类型查询...

    关于Final的用法

    当一个类被声明为`final`时,表示该类不能被继承,任何试图继承该类的尝试都将导致编译错误。这通常用于那些不希望被扩展的基础类,确保其设计意图和行为不会被子类随意更改。 ### 使用`final`的关键考量 - **性能...

    一款反编译jar包工具,无需安装,直接运行即可

    “无需安装,直接运行”意味着这个工具是一个便携式应用,不需要通过复杂的安装过程在计算机上设置。用户只需下载并双击执行文件(如jd-gui.exe),即可启动该工具进行操作。这样的设计方便了用户,无需担心系统...

    jboss-logging-3.4.3.Final-API文档-中文版.zip

    赠送jar包:jboss-logging-3.4.3.Final.jar; 赠送原API文档:jboss-logging-3.4.3.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.3.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.3.Final....

    jboss-logging-3.4.1.Final-API文档-中文版.zip

    赠送jar包:jboss-logging-3.4.1.Final.jar; 赠送原API文档:jboss-logging-3.4.1.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.1.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.1.Final....

    mapstruct-1.3.1.Final-API文档-中文版.zip

    赠送jar包:mapstruct-1.3.1.Final.jar; 赠送原API文档:mapstruct-1.3.1.Final-javadoc.jar; 赠送源代码:mapstruct-1.3.1.Final-sources.jar; 赠送Maven依赖信息文件:mapstruct-1.3.1.Final.pom; 包含翻译后...

    AntiDroidV1.4 Final 最好用的Android反编译和签名工具

    总的来说,AntiDroidV1.4 Final 是一个全面的Android应用反编译和签名解决方案,它的图形化界面使得操作直观且易于上手,对于开发者和安全研究人员来说是一大利器。在使用过程中,遵循`注意事项.txt`中的指导,可以...

    xnio-nio-3.8.0.Final-API文档-中文版.zip

    赠送jar包:xnio-nio-3.8.0.Final.jar; 赠送原API文档:xnio-nio-3.8.0.Final-javadoc.jar; 赠送源代码:xnio-nio-3.8.0.Final-sources.jar; 赠送Maven依赖信息文件:xnio-nio-3.8.0.Final.pom; 包含翻译后的API...

    ClassFinal-java class文件安全加密工具

    Java ClassFinal是一款针对Java类文件的安全加密工具,主要用于保护开发者编写的Java代码不被轻易反编译和篡改,从而增强软件的安全性。在Java应用开发中,源代码的保护至关重要,因为Java的字节码(class文件)是可...

    mapstruct-1.1.0.Final-API文档-中文版.zip

    赠送jar包:mapstruct-1.1.0.Final.jar; 赠送原API文档:mapstruct-1.1.0.Final-javadoc.jar; 赠送源代码:mapstruct-1.1.0.Final-sources.jar; 赠送Maven依赖信息文件:mapstruct-1.1.0.Final.pom; 包含翻译后...

    Java中final的深度剖析

    当一个变量被声明为final时,它的值一旦被赋值后就不能再改变。例如: ```java public final static double PI = 3.14; ``` 这样的常量可以提升代码的可读性,减少逻辑错误,并在需要修改其值时提供便利。常量的...

    xnio-api-3.8.0.Final-API文档-中文版.zip

    赠送jar包:xnio-api-3.8.0.Final.jar; 赠送原API文档:xnio-api-3.8.0.Final-javadoc.jar; 赠送源代码:xnio-api-3.8.0.Final-sources.jar; 赠送Maven依赖信息文件:xnio-api-3.8.0.Final.pom; 包含翻译后的API...

    深入理解Java中的final关键字_动力节点Java学院整理

    当一个变量被声明为 `final` 时,它的值一旦被赋值后就不能再改变。这适用于成员变量、局部变量以及静态常量。例如: ```java public static final String LOAN = "loan"; ``` 在这个例子中,`LOAN` 是一个不可变...

    netty-all-4.1.27.Final-API文档-中文版.zip

    赠送jar包:netty-all-4.1.27.Final.jar; 赠送原API文档:netty-all-4.1.27.Final-javadoc.jar; 赠送源代码:netty-all-4.1.27.Final-sources.jar; 赠送Maven依赖信息文件:netty-all-4.1.27.Final.pom; 包含...

    validation-api-2.0.1.Final-API文档-中英对照版.zip

    赠送jar包:validation-api-2.0.1.Final.jar; 赠送原API文档:validation-api-2.0.1.Final-javadoc.jar; 赠送源代码:validation-api-2.0.1.Final-sources.jar; 赠送Maven依赖信息文件:validation-api-2.0.1....

Global site tag (gtag.js) - Google Analytics