//一种方法加载属性文件
//InputStream ips = new FileInputStream("config.properties");
//另一种方法加载属性文件 注意:该文件放到了src目录下
//InputStream ips = ReflectTest.class.getClassLoader().getResourceAsStream("ZHANG/Reflect/config.properties");
InputStream ips = ReflectTest.class.getResourceAsStream("config.properties");
Properties props = new Properties();
props.load(ips);
ips.close();
String classname = props.getProperty("CLASSNAME");
Collection conllections = (Collection) Class.forName(classname).newInstance();
PropertyDescriptor pd = new PropertyDescriptor(属性名称,对
象.getClass);Method methodGetX = pd.getReadMethod();//得到这个get方
法
Object retVal = methodGetX.invoke(对象);//获得方法返回的值
Method methodSetX = pd.getWriteMethod();//得到set这个方法
methodSetX.invoke(对象,值);//获得方法返回的值
Appche 提供了BeanUtil工具包用它来操作JavaBean,支持属性的级联操作,
如Date date = new Date(); set方法时候可以用date.time 来设置
date.setTime()方法.
BeanUtil类 BeanUtil类是用字符串形势对bean操作,
BeanUtil.setProperty(对象,"属性名","值");
PropertyUtil是由属性本身的类型设置和返回的值
PropertyUtil.setProperty(对象,"属性名",值);
JavaBean可以转换成Map
------------------------------
URL(Uniform Resource Locator)
静态的导入类的方法
import static java.util.Math.abs
Class.forName("java.lang.String");//得到这个类的字节码
反射就是把JAVA类中的各个成分映射成相应的类。Field
Method
Contructor
Package
getClass.getDeclaredField("x");//把私有设置成可访问
Field.setAccessible(true);//抢占私有成员属性
hashcode()使hashset()不能添加相同项;如果改变其中值,remove()是不起作用,导致java内存泄漏现象;不改其值可以remove().