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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄玉昆 黑马帝   /  2013-3-17 20:09  /  1006 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黄玉昆 于 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

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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马