2012-05-06 2 views
6

У меня есть два способа определения констант. Первый содержит кучу статических конечных переменных 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().

Мой вопрос:

  • Какой из них лучше ООП и почему?
  • Есть ли альтернативы или лучший подход существует?

Заранее спасибо.

+2

'Enum ++; finalString -; ' – assylias

+2

Вы первый пример компилируете? Разве это не должно быть 'public class TipTipProperties'? –

+0

@ HunterMcMillen, это моя вина. копия/вставка ошибка. –

ответ

2

Enum - это лучшее, что можно сделать, поскольку Джошуа Блох сказал в Effective Java, у вас будет больше контроля с помощью Enum, если вы хотите распечатать все константы, вы можете. с константами класса вы не можете иметь безопасность типа. read this for further help

+0

Спасибо за ответ. Я правильно использую перечисление? –

1

Использование файла свойств в вашем проекте также было бы хорошим способом сделать это. Как это сделать на Java объясняется на этом post.

В основном вы можете создать что-то под названием tiptip.properties в корневом каталоге вашего проекта, а затем сохранить все пары ключей и значений, которые вам нужны.

+0

Спасибо за ответ. Является ли использование свойств файловых эффектов свойствами? –

+1

Вы можете создать класс, например, свою первую версию или, возможно, версию enum (я даже не думал о версии перечисления, так что она может быть неработоспособной), которая считывает значения из файла свойств и присваивает их константам , Да, конечные переменные могут быть назначены во время выполнения, им не нужно указывать значения во время компиляции. Таким образом, у вас есть гибкость в их изменении, без необходимости повторной компиляции и скорости доступа к ним напрямую, а не для более дорогого поиска при каждом доступе. – TofuBeer

Смежные вопросы