从制造到创造
软件工程师成长之路
posts - 234,  comments - 58,  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 on 2007-11-23 15:34 CoderDream 阅读(228) 评论(0)  编辑  收藏 所属分类: 经验点滴

标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-11-23 15:37 编辑过
 
 

相关链接:
网站导航:

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

常用链接

留言簿(5)

我参与的团队

随笔分类(231)

随笔档案(229)

文章分类(3)

文章档案(3)

收藏夹(440)

友情链接

搜索

  •  

积分与排名

  • 积分 - 55518
  • 排名 - 172

最新评论

阅读排行榜

评论排行榜