黑马程序员技术交流社区
标题:
不懂Class.foName()使用方法,不懂张老师的那个例子,请求帮助
[打印本页]
作者:
李哲
时间:
2012-4-11 15:56
标题:
不懂Class.foName()使用方法,不懂张老师的那个例子,请求帮助
张老师讲反射,有个例子
代码如下
String startingClassName=args[0];
Method mainMethod=Class.forName(startingClassName).getMethod("main", String[].class);
mainMethod.invoke(null,(Object)new String[]{"kkk","sss","www"});
class TestArguments{
public static void main(String[] args){
for(String arg:args)
{
System.out.println(arg);
}
}
}
复制代码
不明白Class.forName()的使用,大家是怎么理解的?
API文档中Class.forName(),返回与“带有给定字符串名的类或接口“相关联的 Class 对象。
就是说上面的例子中,TestArguments类带有startingClassName?但是String startingClassName=args[0];语句不只是把args[]的第一个元素赋给字符串startingClassName了吗?怎样算是"带有"?
我觉得TestArguments类和startingClassName字符串没什么关系啊。只是字符串使用了这个类,这个类完全不依赖于这个字符串吧?这怎么算“带有给定字符串名的类或接口“?
本来就不理解Class.forName(),结果老师举了这个例子,我还是不明白。
大家给个解释?谢谢。
作者:
未长法
时间:
2012-4-11 16:08
startingClassName就是所需类的完全限定名,比如说在哪个包下的具体类名称
以下代码片段返回命名为 java.lang.Thread 的类的运行时 Class 描述符。
Class t = Class.forName("java.lang.Thread")
作者:
陈扬
时间:
2012-4-11 16:28
1、Class.forName("java.lang.Thread") 返回的是Thread这个类。
2、你要明白在java里面任何class都要装载在虚拟机上才能运行。
3、Class.forName(“XXX.XXX.XXX”) 这句话就是装载类用的,具体就是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2