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());
}
}
|