JavaBean和对应的内省API
JavaBean和对应的内省API
小和尚敲代码 发表于3年前
JavaBean和对应的内省API
  • 发表于 3年前
  • 阅读 52
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 通过内省API来简洁明了的示范获取、设置JavaBean中的属性

         JavaBean是具有一点规范的java类,

         规范性:类的访问权限要是public,要有无参构造器、属性访问权限是private,访问属性要通过set、get方法以及一些命名的规范等等。

         效益性:javabean可以在程序里被方便的重用,使开发效率提高。其他类则通过自身的机制发现和操作这些JavaBean属性。

------------------------------------------------------------------------------------------------------------------------------------

JDK中专门提供了一些对JavaBean进行操作的API,这套API称为内省。下面就来实例一下:

这是一个JavaBean类(ReflectPoint):

package com.www.Reflect;
public class ReflectPoint {
 private int x;
 private int y;
 
 public ReflectPoint(int x,int y){   //构造函数无返回值!可以重载但是不可以被子类覆盖
  super();
  this.x = x;
  this.y = y;
 }
 public int getX() {
  return x;
 }
 public void setX(int x) {
  this.x = x;
 }
 public int getY() {
  return y;
 }
 public void setY(int y) {
  this.y = y;
 }
 
}

这是测试类(IntroSpectorTest),将在这个类中使用内省API。

package com.www.Reflect;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
/*
 * 通过JavaBean来获取和设置类中属性
 */
public class IntroSpectorTest {
 public static void main(String[] args) throws Exception {
  ReflectPoint pt1 = new ReflectPoint(4, 6);
  String propertyName = "x";
  
  // 以下是PropertyDescriptor通过反射机制来获取JavaBean中的set、get方法
  
  PropertyDescriptor pd = new PropertyDescriptor(propertyName,pt1.getClass());
  //通过PropertyDescriptor读取类信息,关键一步
  
        //通过get()获取x的值
      
        Method methodGetX = pd.getReadMethod();//调用方法信息
       
        Object retVal = methodGetX.invoke(pt1);//取得返回值
        
        System.out.println(retVal);
        
        //通过Set()来设置x的值
       
        Method methodSetX = pd.getWriteMethod();//调用方法信息
       
        methodSetX.invoke(pt1,8);//取得返回值
        
        System.out.println(pt1.getX());
   
 }
}

 

当然,开发中经常使用BeanUtil包来方便的获取、设置属性。(要导入commons-beanutils.jar以及commons-logging-1.1.1.jar两个包)

 

 
  BeanUtils.setProperty(pt1, propertyName, "9");   //pt1位JavaBean对象,propertyName为属性名
 
  System.out.println(BeanUtils.getProperty(pt1,propertyName));

 

可以看出导入包之后操作JavaBean变得十分简单。

标签: JavaBean 内省 API
共有 人打赏支持
粉丝 23
博文 85
码字总数 28687
×
小和尚敲代码
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: