Файл констант Java - PullRequest
       10

Файл констант Java

21 голосов
/ 05 октября 2010

Я разрабатываю приложение для Android, и я очень новичок в Java и Android.

Я хочу создать некоторые константы для использования в некоторых действиях. Где я могу определить эти константы?

Спасибо.

Ответы [ 4 ]

49 голосов
/ 05 октября 2010

В Java и большинстве ОО-языков считается плохой практикой определять класс просто для хранения констант. Намного лучше определить константы в классе, с которым они связаны. Обычно есть один. например,

interface MyComponent {
  /** The default height for a component */
  public static final int DEFAULT_HEIGHT = 5;
  // other stuff
}

Если действительно нет никого, не стесняйтесь определять отдельный класс.

РЕДАКТИРОВАТЬ: Ключевые вещи здесь:

  1. Облегчите поиск констант. Если есть «естественное» место для их размещения, поместите их туда (т.е. высота по умолчанию для объектов Component принадлежит классу Component).
  2. Не связывайся выше, чем нужно. Помещение всех ваших констант в один класс «Константы» обеспечивает высокую степень связи, особенно потому, что последующие модификаторы, как правило, помещают ВСЕ константы в класс констант, независимо от того, существует ли другой класс, в который они могут быть естественным образом вставлены.
  3. То, что константа используется более чем одним классом, не означает, что она должна быть в классе «Константы». Если константа используется приложением и классами, которые используют класс приложения , поместите ее в класс приложения. Таким образом, вы не увеличиваете связь.
18 голосов
/ 05 октября 2010

Обычно вы используете класс констант или определяете их в классах, где они используются, например:

class Constants {
   public static final int NUM_TRIANGLES = 4;
   public static final String SOME_TEXT = "This is a constant";
}

Затем вы будете ссылаться на них по:

String inst = Constants.SOME_TEXT;
7 голосов
/ 05 октября 2010

Самый распространенный способ - создать ' константы ' в классах, где они вам нужны:

class Example { 
  private static final int FILENAME = "test.txt; 
} 

Вместо личного он также может быть объявлен по умолчанию , защищенным или общедоступным. Несмотря на то, что OO anti pattern считается определением констант, это специальный класс 'constants' ( God ), который хранит константы для всего приложения. Кроме того, вы также можете сохранить данные конфигурации в файле свойств Java , это не считается антишаблоном.

Другим вариантом, который быстро набирает популярность, является использование шаблона Dependency Inject (DI). Часто этот шаблон используется для зависимого объекта, но его также можно использовать для введения постоянных значений в объекты. Это может быть реализовано, например, с помощью облегченной Guice DI Framework от Google:

class Example {
  String filename;

  @Inject
  public Example(@ConfigFilename String filename) {
     this.filename = filename;        
  }

В специальном Binder классе вы свяжете значение со строками, аннотированными @ConfigFilename. Таким образом, у вас будет минимальное сцепление и классы, которые можно протестировать независимо.

0 голосов
/ 05 октября 2010

Вы можете определить некоторые константы в перечислениях Java.

Один перечислитель Java может содержать несколько полей связанных данных.

Oracle предоставляет это введение в перечисления Java.

...