类的初始化问题(初始化顺序与定义的位置前后有关)

来源:互联网 发布:小马网络免费空间 编辑:程序博客网 时间:2024/06/05 17:46
import java.io.DataInputStream;import java.io.IOException;import java.io.InputStream;import java.util.Properties;

 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"的值,

结论,初始化顺序与定义的位置前后有关

原创粉丝点击