问题
I want to read in a datafile that has several constants for my program (e.g. MAXARRAYSIZE).
I then want these constants to be accessible anywhere in my program by typing something like: ConstantsClassName.MAXARRAYSIZE. How do I implement this class?
Once assigned from the datafile, these constants will never again change value during program execution.
Thanks.
回答1:
Use a static bloc in ConstantsClassName class.
public class ConstantsClassName{
public static final String MAXARRAYSIZE;
static{
// read your file and store the data in;
MAXARRAYSIZE = valueRetrievedFromFile;
}
}
MAXARRAYSIZE should be MAX_ARRAY_SIZE if you follow Java conventions for constants declaration.
回答2:
If their are lots of constants in your file, you can use below snippet of code:
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();
}
}
Now use the keyValues HashMap to get the value you have for the constant like
keyValues.get("MAXARRAYSIZE");
In this way you do not have to define multiple constant variables for multiple constants, only keyValues HashMap is sufficient to store all the constants and its value. Hope it helps.
来源:https://stackoverflow.com/questions/40724713/read-in-file-for-constants-java