PropertyDescriptor类 初接触

用到的场景:在写推送MQ消息的时候,想一个sendMessage 类去 推送不同的 队列名。
首先用一个Constant类存放了不同的MQ的推送的队列名字 是用@value注入的,里面有多个队列名字,其实对应着这个Constant不同的属性。现在就是将这些队列名字对应的属性通过一个键值(可以在数据库中加个字段,也可以前端交互)存放到一个Map中去,在调用这个类的时候,循环map取出队列名对应的 属性名字的字符串(注意,这里是属性名字的字符串,并不是这个属性的值)。所以就要用到反射机制的PropertyDescriptor去根据这个属性名字的字符串去得到属性的值(这里就是要推送的队列名)

一、一个简单的PropertyDescriptor类的例子

package testPoi;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
public class TestPropertyDescriptor {
      public static void main(String[] args ) {
          Person person = new Person();
           person .setName( "zhangsan" );
           person .setAge(18);
          getFiled( person , "name" );//结果输出 zhangsan
     }
     
      // 通过反射得到name 
     // 可以看到这是通过 得到  属性的get方法(pd.getReadMethod()) 再调用invole方法取出对应的属性值
     // 同样得到set方法( pd.getWriteMethod()
      private static void getFiled(Object object , String field ) {
          Class<? extends Object> clazz   = object .getClass();
          PropertyDescriptor pd = null ;
          Method getMethod = null ;
           try {
               pd = new PropertyDescriptor( field , clazz );
               if ( null != pd ) {
                    // 获取  这个 field 属性 的get方法
                    getMethod = pd .getReadMethod();
                   Object invoke = getMethod .invoke( object );
                   System. out .println( invoke );
              }
          } catch (Exception e ) {
               e .printStackTrace();
          }
          
     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值