`

java反射 ClassLoader 和 Class.forName() 的区别

    博客分类:
  • Java
 
阅读更多
package fanshe;

public class Person {
	private int age;
	private String name;
	
	static {
		System.out.println("initial static block...");
	}
	
}

package fanshe;

import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class Mymain {
	
	public static void main(String[] args) throws Exception{
		
		ClassLoader c1 = ClassLoader.getSystemClassLoader();
		c1.loadClass("fanshe.Person");
		System.out.println("系统加载Person类");
		Class.forName("fanshe.Person");
		
	}
}


输出结果:
系统加载Person类
initial static block...

原因:  ClassLoader 加载类时不会进行类的初始化, Class.forName()会强制初始化该类。
分享到:
评论

相关推荐

    在Java的反射中,Class.forName和Class

    在Java的反射中,Class.forName和ClassLoader的区别共4页.pdf.zip

    Java 基础面试题

    该文档主要整理了常见的Java基础面试题,包含以下内容: ...32. Class.forName()和ClassLoader.loadClass()的区别 34. 如何防止创建的类名不能java为已有类名,Java加载双亲委派机制 35. 堆和栈的区别

    JAVA核心知识点整理(有效)

    25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................

    day021-反射和注解笔记和代码.rar

    1.2 static 类<?> forName(String name, boolean initialize, ClassLoader loader) name:全限定路径名 initialize:表示是否初始化,默认是false loader:可以指定一个类加载器加载...

    大数据面试题.pdf

    52 1-12)Java中Class.forName和ClassLoader.loadClass的区别 Class.forName("xx.xx")等同于Class.forName("xx.xx",true,CALLClass.class.getClassLoader()),第⼆个参数(bool)表⽰装载类的时候是否 初始化该类,即...

    sarras:通过Java应用程序的静态和动态分析为Graal基板VM反射配置文件生成器

    作为Java代理附加到常规Java应用程序(不是来自本机映像),并拦截反射调用(还包括Class.forName(...)和ClassLoader.loadClass(...)调用)。 因此,它可以在运行时收集有关通过反射访问/引用哪些类/方法/字段的信息...

    带注释的Bootstrap.java

    private ClassLoader createClassLoader(String name, ClassLoader parent) throws Exception { //CatalinaProperties解析$CATALINA_HOME\conf\catalina.properties, //并将catalina.properties内的属性存为...

    java8源码-java_architect:java_架构师

    反射中,Class.forName和classloader的区别? session和cookie的区别和联系,session的生命周期,多个服务部署时session管理。 Java中的队列都有哪些,有什么区别。 Java的内存模型以及GC算法 Java8的新特性 Java...

    基于javatcpsocket通信的拆包和装包源码-someData:存放一些思维导图,图片,ppt等等

    基于java tcp socket通信的拆包和装包源码 ...反射中,Class.forName和ClassLoader区别 动态代理的几种实现方式,对应的优缺点 动态代理与cglib实现的区别 为什么CGlib方式可以对接口实现代理 序列化,

    algorithm-study:你好,世界

    :green_apple: :red_apple: ...反射中,Class.forName和ClassLoader区别 。 java动态代理实现与原理详细分析 描述动态代理的几种实现方式,分别说出相应的优缺点。 动态代理与cglib实现的区别。 为什么CGlib

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

    15.1.2 使用class.forname() 502 15.1.3 从class获得信息 503 15.1.4 从class建立对象 506 15.1.5 操作对象方法与成员 509 15.1.6 动态代理 512 15.2 了解类加载器 515 15.2.1 类加载器层级架构 515 ...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【反射】反射中,Class.forName和classloader的区别 42 【JVM】JAVA编译原理和JVM原理 42 【JVM】Java内存模型 44 【JVM】jvm内存模型 45 主内存与工作内存 45 内存间交互操作 46 重排序 48 【JVM】内存泄漏 49 ...

Global site tag (gtag.js) - Google Analytics