首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

一个恒量引发的思考

2012-09-28 
一个常量引发的思考?public static final long MAX_SIZE 5 * 1024 * 1024?public class HttpUtil {publ

一个常量引发的思考

?

public static final long MAX_SIZE = 5 * 1024 * 1024;?

public class HttpUtil { public static final long MAX_SIZE = 5 * 1024 * 1024; public static void saveFile(HttpServletRequest req, long maxSize) {...}}?

…HttpUtil.save(req, HttpUtil.MAX_SIZE);…?

public static void saveFile(HttpServletRequest req) { saveFile(req, MAX_SIZE);}?

4 楼 hkliya 2011-12-06   sunyzc 写道是因为那个常量值运行之后存储在内存里的吧?
不是的,编译完就删除掉T2.class,T1一样能运行
通过反编译也能看出来
5 楼 stef831018 2011-12-07   一个建议:这种配置用途的常量最好放到properties或者xml文件中去,增加一个文件-内存的同步,如果修改了文件,重新刷一遍内存即可,否则,像楼主所说的必须重新编译class文件; 其实主要是因为普通的基本类型常量以及String的常量是在预编译期间直接写到class里的,如果修改必须重新替换。
但是您提到用包装类去实现常量的功能,我真的不建议这样做,因为仅仅为了一个常量问题增加额外的对象在堆上没有太多必要,效率不高;以上个人意见...
另外我也有赶西二旗地铁的习惯,呵呵呵... 6 楼 hkliya 2011-12-07   stef831018 写道一个建议:这种配置用途的常量最好放到properties或者xml文件中去,增加一个文件-内存的同步,如果修改了文件,重新刷一遍内存即可,否则,像楼主所说的必须重新编译class文件; 其实主要是因为普通的基本类型常量以及String的常量是在预编译期间直接写到class里的,如果修改必须重新替换。
但是您提到用包装类去实现常量的功能,我真的不建议这样做,因为仅仅为了一个常量问题增加额外的对象在堆上没有太多必要,效率不高;以上个人意见...
另外我也有赶西二旗地铁的习惯,呵呵呵...
谢谢,有道理,我们也通常是写到properties文件中的,但没做内存和文件的同步。
其实这种配置写到数据库也行,用户量不大,上传文件操作不频繁的情况下。 7 楼 chenzhou123520 2011-12-07   不错,之前没有考虑过这个,楼主挺细心的 8 楼 wangyongjun0901 2011-12-07   受教了!感谢楼主! 9 楼 xiaolv 2011-12-07   略有小悟   谢了! 10 楼 hiker424 2011-12-07   看来这2路汽车帮了大忙了,哈哈,顶 11 楼 lujiawu12 2011-12-07   最初的: public static final Long MAX_SIZE = 5 * 1024 * 1024;   为什么修改不成功?

是在编译过程中做了解箱吗? 不然按您后来的逻辑应该成功才对。。。

看到最后就这点困惑。。。呵呵

有收获 12 楼 hkliya 2011-12-07   lujiawu12 写道最初的: public static final Long MAX_SIZE = 5 * 1024 * 1024;   为什么修改不成功?

是在编译过程中做了解箱吗? 不然按您后来的逻辑应该成功才对。。。

看到最后就这点困惑。。。呵呵

有收获
谢谢,看的很认真呢。
前面是我写错了,应该是long而不是Long

热点排行