2016-11-21 1 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 당신이 상수 선언에 대한 Java 규약을 따르는 경우 MAX_ARRAY_SIZE을해야합니다.

+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");

이렇게하면 여러 상수에 대해 여러 상수 변수를 정의 할 필요가 없으며 모든 상수와 해당 값을 저장할 수있는 keyValues ​​만 HashMap만으로 충분합니다. 희망이 도움이됩니다.