Class-forName和ClassLoader的区别

来源:互联网 发布:杭州淘宝美工招聘信息 编辑:程序博客网 时间:2024/06/05 11:43
package cn.toltech.cn.toltech.comm.dbcp;/** * Created by sz0816 on 14-10-17. */public class TestClassFromNameLoader {    public static void main(String []args) throws Exception{        TestClassFromNameLoader testClassFromNameLoader = new TestClassFromNameLoader();//        testClassFromNameLoader.testClassForName();        testClassFromNameLoader.testClassLoader();    }    /***     * 会执行static块     */    public void testClassForName() throws Exception{        Class classz = Class.forName("cn.toltech.cn.toltech.comm.util.T_Student");    }    /***     * loadClass不会执行static块     * 在newInstance时会执行static块     */    public void testClassLoader() throws Exception{        Class classz = Thread.currentThread().getContextClassLoader().loadClass("cn.toltech.cn.toltech.comm.util.T_Student"); //不执行static块        classz.newInstance(); //进行初始化时会执行static块    }}package cn.toltech.cn.toltech.comm.util;import java.io.PrintWriter;/** * Created by sz0816 on 14-10-17. */public class T_Student {    static{        System.out.println("init T_Student");    }    private PrintWriter logWriter = new PrintWriter(System.out);    public void sayHello(){        logWriter.println("Hello world");    }}

0 0
原创粉丝点击