先创建一个config.properties,建立一个k-v: className=java.util.HashSet
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Collection;
import java.util.HashSet;
import java.util.Properties;
/**
* 类加载器:就是加载类的工具。
*用类加载器的方式管理资源和配置文件config.properties
*如果类A中引用了类B,Java虚拟机将使用加载类A的类装载器来加载类B,由此,可以把配置文件放置src下面,可以使用相对路径来调用配置文件.
*/
public class ReflectTest2 {
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
/**
* getRealPath();
* 一定要用完整的路径,但完整的路径不是硬编码,而是运算出来的.
*/
// InputStream ips= new FileInputStream("config.properties");可导入也可导出
// InputStream ips= ReflectTest2.class.getClassLoader().getResourceAsStream("cn/itcast/day1/config.properties");
// InputStream ips= ReflectTest2.class.getResourceAsStream("config.properties");//相对当前路径
InputStream ips= ReflectTest2.class.getResourceAsStream("notes/config.properties");//相对当前路径多个notes
Properties props= new Properties();
props.load(ips);
ips.close();
String className= props.getProperty("className");//获取K
// 通过从配置文件获取的className键,来建立HashSet()
Collection collections= (Collection)Class.forName(className).newInstance();
// 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);
// pt1.y=7;
// collections.remove(pt1);
System.out.println(collections.size());
}
}