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需要非常小心的处理常量值。
- 提供常量时:接口定义的常量永远不要更改其值——无法绕过这个限制
- 提供常量时:类中定义的常量放在初始化块中初始化中进行初始化,而不是直接一个=完事——不会出现这个限制
- 使用常量时:外部的常量尽量不要再在内部定义另一个常量别名,如果非要定义采用第二条
来源 主题:再谈一个关于final的不一致编译的低级错误
分享到:
相关推荐
赠送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 编译器编译错误大全 ActionScript 3.0 编译器编译错误大全是指在编译代码时遇到的各种错误,以下是编译器在严谨模式下检测到的错误列表: 1. 函数调用签名匹配错误:检查所提供的参数数目及其...
- **解释**:此错误表示尝试定义一个既是 `final` 又是 `virtual` 的函数,这是不被允许的。 - **解决办法**:选择其中一个属性,要么是 `final` 要么是 `virtual`。 #### 1030 必须指定变量参数数组的名称 - **...
对于每一个方法,都应该添加适当的注释,包括但不限于方法的功能简介、参数含义等。 **正确示例**: ```java /** * 发送消息方法 */ public void sendMsg() { // 实现逻辑 } /** * 根据内容ID和产品类型查询...
当一个类被声明为`final`时,表示该类不能被继承,任何试图继承该类的尝试都将导致编译错误。这通常用于那些不希望被扩展的基础类,确保其设计意图和行为不会被子类随意更改。 ### 使用`final`的关键考量 - **性能...
“无需安装,直接运行”意味着这个工具是一个便携式应用,不需要通过复杂的安装过程在计算机上设置。用户只需下载并双击执行文件(如jd-gui.exe),即可启动该工具进行操作。这样的设计方便了用户,无需担心系统...
赠送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....
赠送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....
赠送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应用反编译和签名解决方案,它的图形化界面使得操作直观且易于上手,对于开发者和安全研究人员来说是一大利器。在使用过程中,遵循`注意事项.txt`中的指导,可以...
赠送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...
赠送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 ClassFinal是一款针对Java类文件的安全加密工具,主要用于保护开发者编写的Java代码不被轻易反编译和篡改,从而增强软件的安全性。在Java应用开发中,源代码的保护至关重要,因为Java的字节码(class文件)是可...
当一个变量被声明为final时,它的值一旦被赋值后就不能再改变。例如: ```java public final static double PI = 3.14; ``` 这样的常量可以提升代码的可读性,减少逻辑错误,并在需要修改其值时提供便利。常量的...
赠送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...
当一个变量被声明为 `final` 时,它的值一旦被赋值后就不能再改变。这适用于成员变量、局部变量以及静态常量。例如: ```java public static final String LOAN = "loan"; ``` 在这个例子中,`LOAN` 是一个不可变...
赠送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; 包含...
Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端。在Java世界中,Netty因其易用性、灵活性以及强大的性能而备受推崇,广泛应用于各种分布式系统、微服务架构以及高...