A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tintick 黑马帝   /  2011-10-3 18:49  /  1977 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

张老师视频里有这样一节  框架的概念及反射技术开发框架原理:
我们配置了文件 config.properties 里面写入className=java.util.ArrayList
  然后老师有这样一段代码:
InputStream in=new FileInputStream("config.properties");
   Properties properties= new  Properties();
   properties.load(in);
    in.close();   
            String className=properties.getProperty("classNmae");
            Collection collection = (Collection)Class.forName(className).newInstance();
就是红色这句我不理解了。既然代码框架开发前并不知道配置文件里面className对应的值是什么。怎么就可以强制转换为collection?

5 个回复

倒序浏览
黑马网友  发表于 2011-10-3 20:41:26
沙发
我们是不知道配置文件里面className对应的值是什么,但一定是实现了Collection接口的子类,如果不写成
那样,就是配置文件配置错误,那这个框架就没什么意义了
回复 使用道具 举报
黑马网友  发表于 2011-10-3 22:59:14
藤椅
前提规定的就是配置文件里的那个类是实现了Collection接口的,不管是什么类,只要实现了Collection接口就行,你也可以用Object类型,这样只要是Object的子类都可以了
回复 使用道具 举报
黑马网友  发表于 2011-10-4 10:31:35
板凳
自己写的当然知道是什么了,,,如果有其他的非集合的 classname,,那加个类型判断就好了,,
Object obj = Class.forName(className).newInstance();
if(obj  instanceof  Collection ) {
..............  
}
在网吧写的,,不知道这代码对不,,,
回复 使用道具 举报
黑马网友  发表于 2011-10-4 10:46:51
报纸
前提是你知道className中的类型是实现了Collection接口的子类,才可以这样强制转换,把object转换成collection后,目的是,子类比父类拥有更多的方法。
Collection collection = (Collection)Class.forName(className).newInstance();
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马