运行时创建对象的疑问

来源:1-1 介绍反射及作用

elisun_me

2021-08-11 10:15:27

问题描述:

老师说case2中的Class.forName("com.imooc.reflect."+op)只有在运行时才决定创建哪个对象,

那case1中不也是运行时传入值么才知道创建哪个对象么?

写回答

1回答

好帮手慕小班

2021-08-11

同学你好,这里可以这样理解,使用new关键字创建对象是静态的,而反射是动态的。比如说,我有一个person类 我可以直接new实例化一个对象,但是如果我不知道一个类,那么我就无法使用new来实例化对象了 这个时候就用到了反射。

    ​反射相当于动态加载类,new相当于静态加载,所以反射就是不通过new关键字,在运行时动态的获取信息或者动态的调用对象方法,而new调用构造方法来创建对象是固定的,就是这个类型的对象。比如

反射的方式创建

http://img.mukewang.com/climg/611371e309fb78ea12270221.jpg

new关键字

http://img.mukewang.com/climg/6113723b09dbd4fa07810504.jpg

祝学习愉快~

0

0 学习 · 16556 问题

查看课程