类名.class forName("包名.类名")

类名.class forName("包名.类名")

我的问题提问区有写同学已经提了,我也看了,但我还是有些迷惑。

为什么不能直接  包名.类名.class  或者 先导包呢

老师说“包名.类名”在这里指的是字符串,并不是真正的类名,这句话到底怎么理解?意思是forName中的值可以不按照包名.类名的规则来写吗?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,有时候具体的包名和类名在项目开发阶段无法确定,只有程序运行时才能确定,这时候就需要Class.forName()去动态加载该类,这个类名通常是在配置文件中配置的。

当具体的类不在项目中时,要想使用的这个类时,就可以用Class.forName()方式。

这里同学可以先这样使用,在学习后面的反射章节后,再回头来看这个Class.forName() ,就会更容易理解。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕阿慧 2020-07-02 11:00:25

同学你好,

1、可以直接使用包名.类名.class,或者先导包再用类名.class。

参考代码如下:

http://img1.sycdn.imooc.com//climg/5efd4d2909bc1f3607900432.jpg

2、这里“包名.类名”是一个字符串,并不是一个真正的类,表示使用这个类的时候不需要import导包。forName中的值需要按照包名.类名的规则写。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 看看就跑 #1
    那为什么不先导包,然后用类名.class的方式呢,优势在哪里? 还有就是为什么说forName是在“不知道具体的类和对象的时候采用”,既然字符串的格式必须为 包名.类名,我们不就已经知道了“具体的类”吗 我的理解肯定出了偏差,但又不知道具体哪里出了偏差
    2020-07-02 11:21:21
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师