|
锁定老贴子 主题:关于常量接口
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2005-04-19
不止一次的看到有人说不应该把常量写在接口中,但我实在找不出一个足够的理由来说服自己不这么做。
for example: 我在页面的session中做一些对象的传递,我喜欢把这些对象的KEY都写在一个常量接口中,无论是在页面还是在servlet中调用起来都很方便,如果说常量不能写在接口中,那我想只应该局限在API级别上吧? 大家有什么其他想法吗? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2005-04-19
darkula 写道 不止一次的看到有人说不应该把常量写在接口中
哪个家伙在乱说阿? 理由? |
|
| 返回顶楼 | |
|
最后更新时间:2005-04-19
darkula 写道 常量写在接口中
啥子写法?比如呢... |
|
| 返回顶楼 | |
|
最后更新时间:2005-04-19
比如
[code:1] public interface DestFileConstants { public static final String DESTFILE_COMMENT_DISCRIPTION = "#"; public static final String TIME_DISCRIPTION = "T"; public static final String NAME_DISCRIPTION = "N"; public static final String OBJ_DISCRIPTION = "R"; public static final String CONTENT_SEPARATOR = " "; } [/code:1] |
|
| 返回顶楼 | |
|
最后更新时间:2005-04-19
mochow 写道 比如
[code:1] public interface DestFileConstants { public static final String DESTFILE_COMMENT_DISCRIPTION = "#"; public static final String TIME_DISCRIPTION = "T"; public static final String NAME_DISCRIPTION = "N"; public static final String OBJ_DISCRIPTION = "R"; public static final String CONTENT_SEPARATOR = " "; } [/code:1] Interface里的常量都是public static final的。可以如下写,省些力气。 [code:1] public interface DestFileConstants { String DESTFILE_COMMENT_DISCRIPTION = "#"; String TIME_DISCRIPTION = "T"; String NAME_DISCRIPTION = "N"; String OBJ_DISCRIPTION = "R"; String CONTENT_SEPARATOR = " "; } [/code:1] |
|
| 返回顶楼 | |
|
最后更新时间:2005-04-19
Readonly 写道 darkula 写道 不止一次的看到有人说不应该把常量写在接口中
哪个家伙在乱说阿? 理由? 是啊我也想知道理由? |
|
| 返回顶楼 | |
|
最后更新时间:2005-04-19
long long ago..........
好像是java core或者是thinking in java里面提到的吧。时间太久,不记得出处了。 总而言之,常量在编译时编译器会进行inline优化。接口变量会导致哪怕你更改了变量值也必须重新编译引用该接口的的类。对于很多应用场合这样的做法是有隐患的,而且隐患很不容易查。 |
|
| 返回顶楼 | |
|
最后更新时间:2005-04-19
octfor 写道 Interface里的常量都是public static final的。可以如下写,省些力气。 [code:1] public interface DestFileConstants { String DESTFILE_COMMENT_DISCRIPTION = "#"; String TIME_DISCRIPTION = "T"; String NAME_DISCRIPTION = "N"; String OBJ_DISCRIPTION = "R"; String CONTENT_SEPARATOR = " "; } [/code:1] 虽然这样,偶还是喜欢麻烦点但是语义让大家都更明白的写法。 |
|
| 返回顶楼 | |
|
最后更新时间:2005-04-19
denis 写道 long long ago..........
好像是java core或者是thinking in java里面提到的吧。时间太久,不记得出处了。 总而言之,常量在编译时编译器会进行inline优化。接口变量会导致哪怕你更改了变量值也必须重新编译引用该接口的的类。对于很多应用场合这样的做法是有隐患的,而且隐患很不容易查。 那应该怎么做?写到配置文件中去?我大约仿佛似乎曾经在哪里也看到过说不好的,但是依稀没看见好的替代解决方案。 |
|
| 返回顶楼 | |
|
最后更新时间:2005-04-19
写在相关专门存放常量的类里?
俺就是这么干的... |
|
| 返回顶楼 | |














