new Class() 与 Class.newInstance()

简介:   new Test()的过程基本等于:  Class clazz = Class.forName("Test");   clazz.newInstance(); 第一步由类加载器查找类路径下的目标类,并加载类实例,对应到JVM就是加载到了方法区。

 

new Test()的过程基本等于:

 Class clazz = Class.forName("Test"); 

 clazz.newInstance();

第一步由类加载器查找类路径下的目标类,并加载类实例,对应到JVM就是加载到了方法区。

第二步类实例加载完成后生成对象实例,实例数据保存在JVM的Heap中。

 

new Clazz()可以直接由IDE检查类的存在, Class.forName只有到运行时才能知道类是否存在,所以经常用于需要反射

的基础设施代码。通过将类初始化过程拆成两步,可以像spring一样将需要加载的类名配到xml等配置文件中,再在初始化的

时候由框架代码将需要的类加载到类加载器中,这是new关键字无法做的。

目录
相关文章
|
4月前
with class of same name
with class of same name
18 0
|
3月前
|
Java
Class.forName()方法总结
Class.forName()方法总结
|
4月前
Class 的讲解
Class 的讲解
52 1
|
10月前
Class下的getEnumConstants
Class下的getEnumConstants
61 0
DHL
|
JSON 安全 算法
value class 完全代替 typealias?
这篇文章将会从 类型安全 、 占用内存 、执行效率 、使用场景 这几个角度来分析 value class ,通过这篇文章,你将学习到以下内容。
DHL
193 0
value class 完全代替 typealias?
|
Java API
Class.newInstance()与new、Constructor.newInstance()的区别
在初始化一个类,生成一个实例的时候,newInstance() 和 new 有什么区别?
255 0
|
Apache
class7
搭建lamp
179 0
class4
安装putty工具远程连接ECS服务器
187 0