张老师讲反射,有个例子
代码如下- 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(),结果老师举了这个例子,我还是不明白。
大家给个解释?谢谢。
|