mangosoft(class.forname 反射_反射三种获取class对象)

发布时间:2025-12-10 19:34:53 浏览次数:2

class.forname 反射_反射三种获取class对象-

class.forname 反射_反射三种获取class对象Java中Class.forName和classloader都可以用来对类进行加载。 Class.forName除了将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块。 而classloader只干一件事情,就是将.class文件加载到jvm中,不会执行static中的内容,只有在newInstance才会去执行static块。 Class.forName(…

Java中Class.forName和classloader都可以用来对类进行加载。 Class.forName除了将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块。 而classloader只干一件事情,就是将.class文件加载到jvm中,不会执行static中的内容,只有在newInstance才会去执行static块。 Class.forName(name,initialize,loader)带参数也可控制是否加载static块。并且只有调用了newInstance()方法采用调用构造函数,创建类的对象。

代码

package com.mangosoft.java.reflect;/** * Created by zhangshengjian on 2017/3/1. */public class Line {    static {        System.out.println("static code executing: loading line...");    }}package com.mangosoft.java.reflect;/** * Created by zhangshengjian on 2017/3/1. */public class Point {    static {        System.out.println("static code executing: loading point...");    }}package com.mangosoft.java.reflect;/** * classloader和Class.forName的区别 * * Created by zhangshengjian on 2017/3/1. */public class ClassLoaderAndForNameTest {    public static void main(String[] args) {        String wholeNameLine = "com.mangosoft.java.reflect.Line";        String wholeNamePoint = "com.mangosoft.java.reflect.Point";        System.out.println("classloader testing...");        testClassLoader(wholeNameLine, wholeNamePoint);        System.out.println("---------------------------------------");        System.out.println("Class.forName testing...");        testForName(wholeNameLine, wholeNamePoint);    }    //classloader    public static void testClassLoader(String wholeNameLine, String wholeNamePoint) {        ClassLoader loader = ClassLoader.getSystemClassLoader();        Class<?> line;        Class<?> point;        try {            line = loader.loadClass(wholeNameLine);            point = loader.loadClass(wholeNamePoint);            System.out.println("line " + line.getName());            System.out.println("point " + point.getName());        } catch (ClassNotFoundException e){            e.printStackTrace();        }    }    //Class.forName    public static void testForName(String wholeNameLine, String wholeNamePoint) {        try {            Class line = Class.forName(wholeNameLine);            Class point = Class.forName(wholeNamePoint);            System.out.println("line " + line.getName());            System.out.println("point " + point.getName());        } catch (ClassNotFoundException e) {            e.printStackTrace();        }    }}

是否还在为Ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!

为防止网络爬虫,请关注公众号回复”口令”

激活idea 激活CLion DataGrip DataSpell dotCover dotMemory dotTrace GoLand PhpStorm PyCharm ReSharper ReShaC++ Rider RubyMine WebStorm 全家桶 刷新

【正版授权,激活自己账号】:Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】:官方授权 正版激活 自己使用,支持Jetbrains家族下所有IDE…

运行结果

转载:http://www.cnblogs.com/mangosoft/p/6485790.html

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477