2016-11-21 2 views
0

Я хочу прочитать в файле данных, который имеет несколько констант для моей программы (например, MAXARRAYSIZE).
Затем я хочу, чтобы эти константы были доступны в любой точке моей программы, набрав что-то вроде: ConstantsClassName.MAXARRAYSIZE. Как реализовать этот класс?Читайте в файле для констант #java

После того как они назначены из файла данных, эти константы больше никогда не изменят значение во время выполнения программы.

Спасибо.

+2

вы можете создать файл свойств и добавить свое постоянное имя и значение в качестве пар ключ-значение. Затем используйте класс resourcebundle для чтения данных. [эта ссылка] (https://docs.oracle.com/javase/tutorial/i18n/resbundle/concept.html) объясняет концепцию. [пример] (https://examples.javacodegeeks.com/core-java/util/resourcebundle/java-resourcebundle-example/) – Laxman

ответ

0

Используйте статический блок в классе ConstantsClassName.

public class ConstantsClassName{ 
    public static final String MAXARRAYSIZE; 
    static{ 
     // read your file and store the data in; 
     MAXARRAYSIZE = valueRetrievedFromFile; 
    } 
} 

MAXARRAYSIZE должен быть MAX_ARRAY_SIZE, если вы будете следовать Java соглашения для констант декларации.

+0

Спасибо! Является ли снаружи просто: public class ConstantsclassName {...} – user1714575

+0

Добро пожаловать :) Да. Я добавил объявление класса. – davidxxx

0

Если их много констант в файле, вы можете использовать ниже фрагмент кода:

public static final HashMap<String, String> keyValues = new HashMap<>(); 
static{ 
    BufferedReader br = null; 
    String line = null; 
    try{ 
     br = new BufferedReader(new FileReader("datafile.txt")); 
     while((line=br.readLine())!=null){ 
      //if Constant name and Value is separated by space 
      keyValues.put(line.split(" ")[0], line.split(" ")[1]); 
     } 
    }catch(IOException e){ 
     e.printStackTrace(); 
    } 
} 

Теперь использовать KeyValues ​​HashMap, чтобы получить значение, которое вы имеете для константы как

keyValues.get ("MAXARRAYSIZE");

Таким образом, вам не нужно определять несколько постоянных переменных для нескольких констант, только для ключевых значений HashMap достаточно для хранения всех констант и их значений. Надеюсь, поможет.