Java-System.getProperty在最后一个类属性';s初始化,但不在方法中
我使用-Dpath.eai=C:\home\eai设置了一个JVM选项。根据调用System.getProperty(“path.eai”)的位置,我不会得到相同的结果 调用最终类属性的初始化 ==>目录为空 在方法内部调用Java-System.getProperty在最后一个类属性';s初始化,但不在方法中,java,jvm,final,jvm-arguments,getproperty,Java,Jvm,Final,Jvm Arguments,Getproperty,我使用-Dpath.eai=C:\home\eai设置了一个JVM选项。根据调用System.getProperty(“path.eai”)的位置,我不会得到相同的结果 调用最终类属性的初始化 ==>目录为空 在方法内部调用 ==>目录是C:\home\eai听起来这是一个顺序初始化问题。您可能正在从静态块访问目录,或者在初始化之前尝试访问目录的某个位置 我无法重现您所述的问题,除非在初始化目录之前进行初始化,例如 class A { public static final String
==>目录是C:\home\eai听起来这是一个顺序初始化问题。您可能正在从静态块访问目录,或者在初始化之前尝试访问目录的某个位置 我无法重现您所述的问题,除非在初始化目录之前进行初始化,例如
class A {
public static final String FILE = printDirectory() + "/hello.txt";
public static final String DIRECTORY = System.getProperty("path.eai");
private static String printDirectory() {
System.out.println("My directory is " + DIRECTORY);
return DIRECTORY;
}
}
在这里,文件在目录之前被初始化。初始化文件时,目录仍然为空。如果删除服务实现方法中调用的受保护静态方法中的
final
?调用的printDirectory()
在哪里?是否有区别。我正在从私有静态方法访问它。我编辑了我最初的帖子。
private static final String EAI_PATH_PROPERTY = "path.eai";
public static final String DIRECTORY = getEaiPath();
private static String getEaiPath() {
String eaiPath = System.getProperty(EAI_PATH_PROPERTY);
return eaiPath;
}
private static String printDirectory() {
System.out.println("My directory is " + DIRECTORY);
}
class A {
public static final String FILE = printDirectory() + "/hello.txt";
public static final String DIRECTORY = System.getProperty("path.eai");
private static String printDirectory() {
System.out.println("My directory is " + DIRECTORY);
return DIRECTORY;
}
}