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

© 马上都有 中级黑马   /  2014-5-20 18:16  /  1519 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Properties;

public class ReflectTest2 {

        public static void main(String[] args) throws Exception {
                /*读取文件并放入字节缓冲流,配置文件一定要用完整的路径,但完整的路径不是用编码,而是运算出来的。
                getRealpath();得到程序安装目录。*/
                InputStream ips = new FileInputStream("config.properties");
/*                getClassLoader()是获取该类的加载器,getResourceAsStream()是获取普通文件,方式是的在classpath
                文件目录下逐一查找要加载的文件,这种方式只读不能改,注意最前面不要有"/"。
                InputStream ips = ReflectTest2.class.getClassLoader().getResourceAsStream("cn/itcast/day1/config.properties");
//                相对于包下面的文件
                InputStream ips = ReflectTest2.class.getResourceAsStream("config.properties");
*/                /*它基于HashSetMap扩展了,可以把内存里面的键值顿写入到文件,也可以在初始化的时候
                把自己的键值顿文件加载进来*/
                Properties props = new Properties();
                props.load(ips);
                //这是关闭调用的系统资源,而不是Java资源被关闭,这样不会倒置Java会垃圾回收,而系统资源还在
                ips.close();
                //获取className的值
                String className = props.getProperty("className");
                //创建className对应的类的字节码的对象
                Collection collections = (Collection)Class.forName(className);

                //Collection collections = new HashSet();
                ReflectPoint pt1 = new ReflectPoint(3, 3);
                ReflectPoint pt2 = new ReflectPoint(5, 5);
                ReflectPoint pt3 = new ReflectPoint(3, 3);
                collections.add(pt1);
                collections.add(pt2);
                collections.add(pt3);
                collections.add(pt1);

                System.out.println(collections.size());
        }
}


评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

4 个回复

正序浏览
艮昕辶 发表于 2014-5-21 13:19
Collection collections = (Collection)Class.forName(className);
这句
Collection collections = (Coll ...

谢谢,原来没有创建对象,呵呵
回复 使用道具 举报
Collection collections = (Collection)Class.forName(className);
这句
Collection collections = (Collection)Class.forName(className).newInstance();

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报

Collection collections = (Collection)Class.forName(className);

MyEclipse提示:不能从 Class<capture#1-of ?> 强制类型转换为
回复 使用道具 举报
错误信息是什么?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马