首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >"Class.forName()“和"Class.forName().newInstance()”有什么区别?

"Class.forName()“和"Class.forName().newInstance()”有什么区别?
EN

Stack Overflow用户
提问于 2010-01-19 18:11:38
回答 7查看 293K关注 0票数 171

Class.forName()Class.forName().newInstance()之间的区别是什么

我不明白有什么显著的区别(我读过一些关于它们的文章!)。你能帮帮我吗?

EN

回答 7

Stack Overflow用户

发布于 2010-01-19 18:13:46

Class.forName()为您提供了类对象,这对于反射很有用。这个对象拥有的方法是由Java定义的,而不是由编写类的程序员定义的。它们对于每个类都是相同的。在上面调用newInstance()会给出一个该类的实例(即调用Class.forName("ExampleClass").newInstance()相当于调用new ExampleClass()),在这个实例上你可以调用类定义的方法,访问可见字段等。

票数 37
EN

Stack Overflow用户

发布于 2013-11-07 21:47:09

1:如果你只对类的静态块感兴趣,那么加载类就可以了,并且会执行静态块,那么你所需要的就是:

Class.forName("Somthing");

2:如果你有兴趣装入类,执行它的静态块,还想访问它的非静态部分,那么你需要一个实例,然后你需要:

Class.forName("Somthing").newInstance();
票数 19
EN

Stack Overflow用户

发布于 2010-01-19 18:16:38

Class.forName()获取对类的引用时,Class.forName().newInstance()尝试使用类的无参数构造函数来返回新实例。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2092659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档