【问题标题】:How to define Constant values - Best Practice如何定义常量值 - 最佳实践
【发布时间】:2012-05-15 08:07:57
【问题描述】:

我有两种定义常量的方法。第一个将一堆静态最终 DataType 变量保存在一个类中,另一个使用 Enum。

这是拳头类型:

public class TipTipProperties {
    public static final String MAX_WIDTH_AUTO = "auto";
    public static final String POSITION_RIGHT = "right";    
}

这些变量的使用将通过静态调用,例如:TipTipProperties.MAX_WIDTH_AUTO

而第二种是:

public enum TipTipProperties {

    MAX_WIDTH_AUTO(MaxWidth.AUTO),  
    POSITION_RIGHT(Position.RIGHT);

    private MaxWidth maxWidth;
    private Position position;  

    private TipTipProperties(MaxWidth maxWidth) {
        this.maxWidth = maxWidth;
    }

    private TipTipProperties(Position position) {       
        this.position = position;
    }

    public MaxWidth getMaxWidth() {
        return maxWidth;
    }   

    public Position getPosition() {
        return position;
    }

    public enum MaxWidth {
        AUTO("auto");

        private String width;

        private MaxWidth(String width) {
            this.width = width;
        }

        public String getWidth() {
            return width;
        }
    }

    public enum Position {
        RIGHT("right"),         

        private String position;

        private Position(String position) {
            this.position = position;
        }

        public String getPosition() {
            return position;
        }       
    }
}

作为示例用法:TipTipProperties.POSITION_RIGHT.getPosition().getPosition()

我的问题是:

  • OOP 哪个更好,为什么?
  • 是否存在任何替代方案或更好的方法?

提前致谢。

【问题讨论】:

  • Enum++; finalString--;
  • 你第一个例子编译了吗?不应该是public class TipTipProperties吗?
  • @HunterMcMillen,这是我的错。复制/粘贴错误。

标签: java oop static enums constants


【解决方案1】:

正如 Joshua Bloch 在Effective Java 中所说的那样,Enum 是最好的,你可以使用 Enum 进行更多控制,就像你想打印所有常量一样,你可以。 使用类常量你不能有类型安全。read this for further help

【讨论】:

    【解决方案2】:

    在您的项目中使用属性文件也是一种很好的方法。这个post解释了如何在Java中做到这一点。

    您基本上可以在项目的根目录中创建一个名为 tiptip.properties 的东西,然后存储您需要的所有键值对。

    【讨论】:

    • 感谢您的回复。使用属性文件不影响性能吗?
    • 你可以创建一个类,比如你的第一个版本,或者可能是枚举版本(虽然我没有考虑过枚举版本,所以它可能不可行)从属性中读取值文件并将它们分配给常量。是的,最终变量可以在运行时赋值,它们不需要在编译时赋值。这样您就可以灵活地更改它们而无需重新编译,并且可以直接访问它们而不是每次访问时进行更昂贵的查找。
    猜你喜欢
    • 1970-01-01
    • 2010-10-04
    • 2012-03-27
    • 2011-03-06
    • 2010-10-12
    • 2013-08-03
    • 1970-01-01
    • 2011-06-13
    相关资源
    最近更新 更多