从制造到创造
软件工程师成长之路
posts - 234,  comments - 64,  trackbacks - 0
在反射机制中,Class.forName(className).newInstance();
如果你想通过反射机制得到当前包的某个类的实例,传入类名的同时必须传入包名。

例如在包com.coderdream下有两个类Shape,ShapeFactory,如果你想在ShapeFactory中的某个方法中用反射的方法生成Shape类,那么如果直接使用:
    Class.forName("Shape").newInstance();
会抛出找不到类的异常,因为确实没有Shape类,而只有com.coderdream.Shape类。

但是我们传参数时一般只会传不带包的类名,那么我们可以这样处理:
    String packageName = new ShapeFactory().getClass().getPackage().getName();
    
return (Shape) Class.forName(packageName + "." + className).newInstance();
其中    new ShapeFactory().getClass().getPackage().getName() 会得到包名“com.coderdream”,我们只要加上“.”和类名就没有问题了。

posted @ 2007-11-23 15:34 CoderDream 阅读(248) | 评论 (0)编辑 收藏

<2007年11月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

常用链接

留言簿(5)

我参与的团队

随笔分类(231)

随笔档案(229)

文章分类(3)

文章档案(3)

收藏夹(440)

友情链接

搜索

  •  

积分与排名

  • 积分 - 60374
  • 排名 - 170

最新评论

阅读排行榜

评论排行榜