`
281460530
  • 浏览: 1213 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

发布项目时不要只替换一个class类

    博客分类:
  • java
 
阅读更多

web 项目里面经常会定义一些常量的接口,类,方便开发引用。在维护工作中,如果修该了这个常量值Constant类,发布过程中只替换Constant类,你会发现引用类中的值根本没有改掉。

例:定义一个常量类Constant 定义了两个基本常量。

public class Constant {
  public final static int Max_size = 120;
  public final static String xxSQL="select *From SCOTT;";

}
写个调用类:

public class Client {
 public static void main(String[] args ){
   System.out.println("引用基本类型常量:"+Constant.Max_size);
  System.out.println("引用String类型常量:"+Constant.xxSQL); }

}

结果大家都知道:

引用基本类型常量:120
引用String类型常量:select *From SCOTT;

 

如果你用反编译工具打开Client.class的内容你就会发现,它的内容是这样的:

public class Client
{

 public Client()
 {
 }

 public static void main(String args[])
 {
  System.out.println("引用基本类型常量:120");
  System.out.println("引用String类型常量:select *From SCOTT;");
 }
}

我操,居然没有引用到Constant的变量,而是把他们的值。

总结:

对于final 修饰基本类型和String类型的,我们的智能IDE编译器会认为它是稳定态的,所以在编译器是就直接放值编译到了字节码中了,避免了运行期的引用,提高效率。

维护工作中如果咱们只对类似Constant类的重新发布,结果显然易见就是--莫名其妙被坑了...

 

 

分享到:
评论

相关推荐

    ClassFinal是一款java class文件安全加密工具

    5. **运行阶段**:在运行时,需要一个解密器来解密加载到JVM的类文件,这个解密器通常是ClassFinal提供的。 四、ClassFinal与其他保护措施的结合 尽管ClassFinal提供了强大的保护,但单一的防护手段可能不足以抵挡...

    JAVA修改类文件编译不生效

    在 Java 编程中,我们经常会定义一个常量类来管理项目中的常量值,例如: ```java public class AppConst { public static final String STR_CONST_1 = "String1"; public static final String STR_CONST_2 = ...

    通过自定义Gradle插件修改编译后的class文件

    要创建一个自定义插件,你需要编写一个实现了`org.gradle.api.Plugin`接口的类,并声明一个`apply`方法,用于向项目应用插件逻辑。 在我们的场景中,目标是修改编译后的class文件,这可能涉及到字节码操作,例如...

    PyPI 官网下载 | django-class-registry-0.0.2.tar.gz

    标题中的"PyPI 官网下载 | django-class-registry-0.0.2.tar.gz"表明这是一个在Python Package Index(PyPI)上发布的开源软件包,名为`django-class-registry`,版本为0.0.2,以tar.gz格式打包。PyPI是Python开发者...

    基于jenkins发布编译后的class文件

    其中,发布编译后的Class文件是Jenkins的一个重要应用场景。本文将详细介绍基于Jenkins发布编译后的Class文件的整个过程,并提供详细的示例代码,以便读者更好地理解和应用。 二、创建自由风格项目 在Jenkins中,...

    将myEclipse中的java项目发布成jar

    - 在这里可以配置JAR文件的清单文件,主要是设置主类名(Main-Class属性),这是运行JAR文件时会首先执行的类。 - 可以添加其他自定义属性,例如`Class-Path`来指定依赖库的位置等。 4. **导出JAR文件**: - ...

    在项目中直接启动jetty,发布自己

    至于文件“SecurityManage”,这可能是项目中的一个安全管理相关的类或模块。在Jetty中,安全管理主要涉及身份验证和授权。我们可以通过实现自定义的`ConstraintSecurityHandler`,配置用户、角色和权限,以实现基于...

    基于MyEclipse开发平台的利用ant来发布项目

    本篇文章将详细介绍如何在MyEclipse中利用Ant来发布项目。 首先,Ant的工作原理是通过一个名为`build.xml`的配置文件来定义一系列的任务,这些任务可以是编译源代码、创建JAR或WAR包、复制文件等。在描述中提到的...

    Unity3D脚本:修改webplayer发布后logo图标的方法1

    在Unity3D中,开发游戏或交互式应用时,我们经常需要将其发布为Web Player格式,以便用户在浏览器中直接体验。然而,Unity Web Player在加载时会显示Unity的默认Logo,这可能不符合某些开发者的品牌需求。这篇内容将...

    多模块项目如何建解决方案

    在Visual Studio等集成开发环境中,解决方案是一个容器,它可以包含一个或多个相互关联的项目(Projects),这些项目共同构成了一个完整的应用程序或系统。解决方案提供了一种管理项目依赖、构建顺序和配置的方式。 ...

    JAVA上百实例源码以及开源项目源代码

    Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...

    Tinker 热修复demo

    在项目中创建一个继承自`TinkerApplication`的自定义应用类,用于初始化Tinker。例如: ```java public class MyApplication extends TinkerApplication { @Override public void onCreate() { super.onCreate()...

    commons-bcel,阿帕奇公地BCEL.zip

    Apache Commons BCEL(Byte Code Engineering Library)是Apache软件基金会的一个开源项目,主要目的是提供对Java字节码的高级操作。这个库允许开发者分析、创建、修改和编译Java类文件,为开发动态类生成和代码分析...

    如何将CLASS文件打成JAR包

    - 如果你有一个包含多个`.class`文件的文件夹,比如`test`,要将其打包为`test.jar`,命令会是这样的: ``` jar cvf test.jar test ``` - 这个命令会将`test`文件夹中的所有内容打包到`test.jar`中。如果需要...

    java调用MQTT,实现订阅/发布功能

    在这个场景中,我们将讨论如何在Java中调用MQTT,实现订阅和发布功能,并通过封装`MQTTUtils`工具类来简化这一过程。 首先,我们需要引入一个Java MQTT客户端库,如Eclipse Paho项目提供的`org.eclipse.paho.client...

    JAVAAssist jar包 ,最新发布,4月16号更新

    JavaAssist是一个强大的Java字节码操作库,它允许开发者在运行时动态地修改或创建新的Java类。这个jar包的最新版本是在4月16日更新的,提供了最新的功能和改进,对于需要进行字节码操作的Java开发工作尤其有用。 在...

    PHP LJ-tools class-开源

    PHP LJ-tools class 是一个专门为LiveJournal(简称LJ)网站设计的API类库,允许开发者通过PHP语言与LJ的接口进行交互,实现诸如读取和发布消息、使用控制台以及管理朋友和非朋友用户等功能。这个开源项目目前处于...

    java提取补丁文件

    应用补丁时,可能需要通过更新项目配置或直接替换源代码目录中的文件。 六、自动化处理 为了提高效率,开发者通常会编写脚本或程序来自动化补丁的提取和应用过程。这可能涉及到解析`copyclass.txt`,调用`...

    自定义模块与发布.pdf

    在Java中,模块可能是一个包含相关包和类的独立项目。 自定义模块的优势在于提高了代码的可维护性、可读性和可重用性。它们使得开发者能够更有效地组织代码,避免了大而复杂的单体应用。此外,通过模块化设计,...

    Spring整合ActiveMQ实现点对点与主题发布订阅通信

    对于点对点通信,我们可以创建一个发送消息的Java类,如下所示: ```java @Service public class MessageProducer { @Autowired private JmsTemplate jmsTemplate; public void sendMessage(String message) { ...

Global site tag (gtag.js) - Google Analytics