论坛首页 Java版

关于常量接口

浏览 11540 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2005-04-19
不止一次的看到有人说不应该把常量写在接口中,但我实在找不出一个足够的理由来说服自己不这么做。
  for example: 我在页面的session中做一些对象的传递,我喜欢把这些对象的KEY都写在一个常量接口中,无论是在页面还是在servlet中调用起来都很方便,如果说常量不能写在接口中,那我想只应该局限在API级别上吧?
  大家有什么其他想法吗?
   
最后更新时间:2005-04-19
darkula 写道
不止一次的看到有人说不应该把常量写在接口中

哪个家伙在乱说阿? 理由?
   
0 请登录后投票
最后更新时间:2005-04-19
darkula 写道
常量写在接口中

啥子写法?比如呢...
   
0 请登录后投票
最后更新时间: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]
   
0 请登录后投票
最后更新时间: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]
   
0 请登录后投票
最后更新时间:2005-04-19
Readonly 写道
darkula 写道
不止一次的看到有人说不应该把常量写在接口中

哪个家伙在乱说阿? 理由?


是啊我也想知道理由?
   
0 请登录后投票
最后更新时间:2005-04-19
long long ago..........
好像是java core或者是thinking in java里面提到的吧。时间太久,不记得出处了。
总而言之,常量在编译时编译器会进行inline优化。接口变量会导致哪怕你更改了变量值也必须重新编译引用该接口的的类。对于很多应用场合这样的做法是有隐患的,而且隐患很不容易查。
   
0 请登录后投票
最后更新时间: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]


虽然这样,偶还是喜欢麻烦点但是语义让大家都更明白的写法。
   
0 请登录后投票
最后更新时间:2005-04-19
denis 写道
long long ago..........
好像是java core或者是thinking in java里面提到的吧。时间太久,不记得出处了。
总而言之,常量在编译时编译器会进行inline优化。接口变量会导致哪怕你更改了变量值也必须重新编译引用该接口的的类。对于很多应用场合这样的做法是有隐患的,而且隐患很不容易查。


那应该怎么做?写到配置文件中去?我大约仿佛似乎曾经在哪里也看到过说不好的,但是依稀没看见好的替代解决方案。
   
0 请登录后投票
最后更新时间:2005-04-19
写在相关专门存放常量的类里?
俺就是这么干的...
   
0 请登录后投票
论坛首页 Java版

跳转论坛:
JavaEye推荐