博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
静态常量(static final)在class文件里是如何的呢?
阅读量:1545 次
发布时间:2019-04-21

本文共 1044 字,大约阅读时间需要 3 分钟。

近期写项目遇到一个问题,来回折腾了几次,最终探究清楚了。不废话。上样例。

背景:由于项目小,没有使用配置文件,全部静态常量都放在Config.java里面了

public class Config {    public static final String URL="http://www.xxxx.com/";    public static final int PAGE_NUM=10;}

看起来也不错啊,没什么大问题。都这么用的啊。

好吧,放到server上执行一下,正常啊。

接下来,问题来了。

URL改,PAGE_NUM也改。

public class Config {    public static final String URL="http://www.yyyy.com/";    public static final int PAGE_NUM=200;}

好了,生成下class文件,放到server上。喝杯茶。。。

刷新下,没变。再等等。server有个转换时间。。。

30s。

。。没变

1min。。。没变

重新启动server。

。(应该好了)

怎么还是没变???~~~!!!@@@###&&&+++***(究竟怎么回事。server坏了。重装?)

事实上什么都没坏。你不信?往下看。

找个小工具。把class文件反编译一下,找找引用常量的地方。你就瞬间明确了。

不是你想象的

Config.URLConfig.PAGE_NUM

 而是 

"http://www.xxxx.com/"10

 明确了吧,常量在class文件里,直接替换为值了。 

那还是想用Config.java,又不想改非常多地方。怎么办?

两个方法:

public class Config {    public static final String URL=new String("http://www.xxxx.com/");//好用    public static final int PAGE_NUM=new Integer(10);//不好用}
public class Config {    public static String getURL(){	return "http://www.yyyy.com";    }     public static int getPageNum(){	return 200;    } }
好了,其余的,等待大家去发现。

转载地址:http://xmdcy.baihongyu.com/

你可能感兴趣的文章
SpringMVC中乱码解决方案
查看>>
SpringMVC中时间格式转换的解决方案
查看>>
post和get请求相关知识点
查看>>
关于try finally 中的return语句的问题
查看>>
RequestBody/ResponseBody处理Json数据
查看>>
springmvc请求参数获取的几种方法
查看>>
在eclipse中创建和myeclipse一样的包结构
查看>>
Java中的IO流
查看>>
java中的关键字
查看>>
如果某个方法是静态的,它的行为就不具有多态性
查看>>
优化Hibernate所鼓励的7大措施
查看>>
Java 8系列之重新认识HashMap
查看>>
HashMap 、 ArrayList、String 重写了equals方法 而Object类(比如User)没有重写
查看>>
Servlet的生命周期
查看>>
Object中的getClass()返回的是当前运行的类
查看>>
加载驱动程序的方法
查看>>
深入理解java异常处理机制
查看>>
object类的基本方法
查看>>
回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议
查看>>
Dubbo分布式服务框架入门(附工程)
查看>>