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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© luis 初级黑马   /  2014-4-15 16:31  /  603 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  1. <P> </P>
复制代码

package Introspect;
//需求:利用javabean获取类内部的属性
import java.beans.PropertyDescriptor;
import java.io.FileInputStream;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.Properties;
public class JavaBeanIntro
{
            public static void main(String[] args)throws Exception
           {
                    //利用配置文件读取需要做内省的类
                   InputStream ips = new FileInputStream("Introspect.properties");
                  //创建一个新的property 列表
                  Properties prop = new Properties();
                 //利用properties里面提供的load工具把读取的文件加载在到新建的prop里
                  prop.load(ips);
                 //关闭输入流避免内存泄露
                ips.close();
//---------------------------------------------------------------------------   
              //利用properties中的getProperty来读取需要的键值对
               String str = prop.getProperty("className");
             //获取内存中这个类对应的字节码
             Class class1 = Class.forName(str);
             //new出实例对象
            Object obj = class1.newInstance();
            //利用Javabean中的熟悉描述propetydescriptor对对象实例进行属下描述
            PropertyDescriptor pd = new PropertyDescriptor("y", class1);
//-------------------------------------------------------------------------      
             //获得读取属性值的方法
            Method getX=pd.getReadMethod();
            int c = (Integer)getX.invoke(obj);
            System.out.println("设置前y的值是:......"+c);
//-------------------------------------------------------------------------  
             //获取设置属性值的方法
              Method setX = pd.getWriteMethod();
              //设置属性的值
              setX.invoke(obj, 11);
              //重新获取设置后的属性的值
              int d = (Integer)getX.invoke(obj);
              System.out.println("设置后y的值是:......"+d);
  
   
          }
}

0 个回复

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