public class ManagerFactory { private static Properties prop = null; private static String ROOTORGANAZITION = null; public static void init() { prop = new Properties(); InputStream is = null; DataInputStream ins = null; try { is = ManagerFactory.class.getResourceAsStream( "Indentity.properties"); ins = new DataInputStream(is); prop.load(ins); ROOTORGANAZITION = prop.getProperty("ROOTORGANAZITION", "gmcc"); } catch (IOException ex) { ex.printStackTrace(); } finally { try { if (null != is) is.close(); } catch (IOException e) { } try { if (null != ins) ins.close(); } catch (IOException e1) { } } }
static { init(); } public static String getRootOrgName() { return ROOTORGANAZITION; } }
这时是可以将ROOTORGANAZITION的初始化为 "gmcc"的
但如果把ROOTORGANAZITION的定义放在static块后,那么就不能达到预期效果,这时获得ROOTORGANAZITION=null
但是如果只是声明,不定义,即只是 private static String ROOTORGANAZITION;n那么放在static块前后都是可以的,他都会 是"gmcc"的值,
结论,初始化顺序与定义的位置前后有关