黑马程序员技术交流社区

标题: 类加载器与内省结合的小程序 [打印本页]

作者: 黄玉昆    时间: 2013-3-17 20:09
标题: 类加载器与内省结合的小程序
本帖最后由 黄玉昆 于 2013-3-17 20:27 编辑
  1. package cn.itcast.text1;

  2. import java.beans.IntrospectionException;
  3. import java.beans.PropertyDescriptor;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.lang.reflect.InvocationTargetException;
  7. import java.lang.reflect.Method;
  8. import java.util.Properties;

  9. public class LoaderToJavaBean {
  10.         public static void main(String [] args)throws Exception {
  11.                 //创建ReflectPoint对象,并赋值
  12.                 ReflectPoint rf = new ReflectPoint(3,7);
  13.                 //通过get方法获取属性名称
  14.                 String propertyName = getPropertyName();
  15.                 //通过get方法获取属性值
  16.                 Object retVal = getProperty(rf, propertyName);
  17.                 System.out.println(retVal);
  18.                 //通过set方法设置属性值
  19.                 Object value = 7;
  20.                 setProperty(rf, propertyName, value);
  21.                 System.out.println(rf.getX());
  22.         }
  23.         //设置属性值的方法
  24.         private static void setProperty(Object rf, String propertyName,
  25.                         Object value) throws IntrospectionException,
  26.                         IllegalAccessException, InvocationTargetException {
  27.                 //创建属性描述符对象,将属性名称和加载文件等信息写入其中
  28.                 PropertyDescriptor pd =
  29.                                 new PropertyDescriptor(propertyName,rf.getClass());
  30.                 //通过反射的方法类Method,获取属性所对应的set方法
  31.                 Method methodSetX = pd.getWriteMethod();
  32.                 methodSetX.invoke(rf, value);
  33.         }
  34.         //获取属性值的方法
  35.         private static Object getProperty(Object rf, String propertyName)
  36.                         throws IntrospectionException, IllegalAccessException,
  37.                         InvocationTargetException {
  38.                 //创建属性描述符对象,获取属性所对应的名称和加载文件等信息
  39.                 PropertyDescriptor pd =
  40.                                 new PropertyDescriptor(propertyName,rf.getClass());
  41.                 //通过反射的方法类Method,获取属性所对应的get方法
  42.                 Method methodGetX = pd.getReadMethod();
  43.                 Object retVal = methodGetX.invoke(rf);
  44.                 return retVal;
  45.         }
  46.         //获取属性名称的方法
  47.         private static String getPropertyName() throws IOException {
  48.                 //创建读取流对象,将文件中的信息读取到流中
  49.                 InputStream in =
  50.                         LoaderToJavaBean.class.getResourceAsStream("config.propert");//这里可以用任何你程序中存在的类加载
  51.                 //创建Propertie对象,将流中信息加载进内存
  52.                 Properties props = new Properties();
  53.                 props.load(in);
  54.                 in.close();
  55.                 //获取文件中的属性名称,并作为返回值返回
  56.                 String propertyName = props.getProperty("propertyName");
  57.                 return propertyName;
  58.         }
  59. }
复制代码
配置信息config.property在当前包中,内容:
propertyName=x

这个小程序,是我在学完类加载器和内省后写的,可能不太好,不过还有点小成果。希望能对大家有所启发。




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