黑马程序员技术交流社区

标题: 关于框架的思考 [打印本页]

作者: tintick    时间: 2011-10-3 18:49
标题: 关于框架的思考
张老师视频里有这样一节  框架的概念及反射技术开发框架原理:
我们配置了文件 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?
作者: 匿名    时间: 2011-10-3 20:41
我们是不知道配置文件里面className对应的值是什么,但一定是实现了Collection接口的子类,如果不写成
那样,就是配置文件配置错误,那这个框架就没什么意义了
作者: 匿名    时间: 2011-10-3 22:59
前提规定的就是配置文件里的那个类是实现了Collection接口的,不管是什么类,只要实现了Collection接口就行,你也可以用Object类型,这样只要是Object的子类都可以了
作者: 匿名    时间: 2011-10-4 10:31
自己写的当然知道是什么了,,,如果有其他的非集合的 classname,,那加个类型判断就好了,,
Object obj = Class.forName(className).newInstance();
if(obj  instanceof  Collection ) {
..............  
}
在网吧写的,,不知道这代码对不,,,
作者: 匿名    时间: 2011-10-4 10:46
前提是你知道className中的类型是实现了Collection接口的子类,才可以这样强制转换,把object转换成collection后,目的是,子类比父类拥有更多的方法。
Collection collection = (Collection)Class.forName(className).newInstance();




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2