可乐加.糖 2015-01-17 03:10 采纳率: 50%
浏览 2261
已采纳

Class.fromName()的理解

Test t=new Test();
和Test t=(Test)Class.forName().newInstance();
有什么不同 其中的Class.forName()有代表什么
对于Class.fromName()不太理解 请大神指点

  • 写回答

1条回答 默认 最新

  • threenewbee 2015-01-17 03:20
    关注

    Test t=new Test();
    和Test t=(Test)Class.forName().newInstance();
    这样写的确没什么区别,看上去后者还麻烦一点。

    但是我昨天回答你了。有时候我们没法知道类型,只能反射。

    思考下这样两个场景,场景1:你在编写一个开发环境,要求用户导入一个类,你可以在编辑器中给出这个类有什么方法,有什么参数之类的提示,那么这个类的类型不可能在你开发编辑器的时候知道。

    也就是Test你不能这么写。它在你的代码中没有。那怎么创建实例怎么调用?只能用object类型。可是object类型没有办法new出一个实际上test的类型,就需要反射了。

    再比如场景2:你编写的程序允许第三方开发插件,或者你本身就是一个插件容器。好比Spring。那么它怎么能new你的bean出来呢?显然还是要通过反射。你用配置文件以字符串的形式写出类名,程序根据它创建实例,那就要Class.fromName()

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?