问题描述
- Class.fromName()的理解
-
Test t=new Test();
和Test t=(Test)Class.forName().newInstance();
有什么不同 其中的Class.forName()有代表什么
对于Class.fromName()不太理解 请大神指点
解决方案
Test t=new Test();
和Test t=(Test)Class.forName().newInstance();
这样写的确没什么区别,看上去后者还麻烦一点。
但是我昨天回答你了。有时候我们没法知道类型,只能反射。
思考下这样两个场景,场景1:你在编写一个开发环境,要求用户导入一个类,你可以在编辑器中给出这个类有什么方法,有什么参数之类的提示,那么这个类的类型不可能在你开发编辑器的时候知道。
也就是Test你不能这么写。它在你的代码中没有。那怎么创建实例怎么调用?只能用object类型。可是object类型没有办法new出一个实际上test的类型,就需要反射了。
再比如场景2:你编写的程序允许第三方开发插件,或者你本身就是一个插件容器。好比Spring。那么它怎么能new你的bean出来呢?显然还是要通过反射。你用配置文件以字符串的形式写出类名,程序根据它创建实例,那就要Class.fromName()
时间: 2024-08-31 15:17:45