文档章节

JavaBean和对应的内省API

小和尚敲代码
 小和尚敲代码
发布于 2015/03/02 16:38
字数 461
阅读 74
收藏 0

         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变得十分简单。

© 著作权归作者所有

共有 人打赏支持
小和尚敲代码
粉丝 23
博文 86
码字总数 28687
作品 0
南昌
程序员
Java内省(Introspector)

Java内省(Introspector) Java内省技术专门用来操作JavaBean的属性。 为什么要学内省? 开发框架时,经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦...

_-Leon-_
2014/07/14
0
0
Java基础巩固笔记(1)-反射

Contents java基础巩固笔记(1)-反射 反射基本使用 数组的反射 配置文件加载 内省(Instropector) & JavaBean 反射:将类的属性和方法映射成相应的类。 反射基本使用 获取Class类的三种方法: 类...

卟想苌亣
2017/11/23
0
0
Java内省机制简单了解_Introspector

Java内省机制简单了解_Introspector Java内省机制 内省(Introspector) —— 为了让程序员们更好的从左Java对象的属性,SUN公司开发了一套API,就被我们称为“内省”,有利于我们对类对象的属...

秋风醉了
2014/07/10
0
0
JAVA 内省(introSpector)

用于对JavaBean(特殊的Java类:符合一些特殊的规则get/set方法)操作。 当一个普通的类中有getXxx , setXxx方法时,就可以当做一个JavaBean来操作。在JavaBean中并不知道这个类中的成员名称...

xiahuawuyu
2012/11/14
0
0
Java基础-----JavaBean内省机制

Java对特殊的类---JavaBean的处理方法---内省机制 java.beans 1、Introspector Java提供的内省操作的工具类 public static BeanInfo getBeanInfo(Class<?> beanClass) 获取beanClass的描述信......

baibuxiha
2016/04/14
97
0

没有更多内容

加载失败,请刷新页面

加载更多

申请Let's Encrypt永久免费SSL证书

环境安装 1、安装git yum install git-core 2、安装python 系统自带 不用安装 只要版本大于2.7即可。 获取Let's Encrypt免费SSL证书 先停止nginx 在阿里云安全组里加入 443端口的入规则 git ...

HGMrWang
34分钟前
1
0
如何使用playframework进行更好的开发

1: 自定义基类Controller 相信刚开始使用Play的人写的Controller 都继承于 play.mvc.Controller , 但这并不是一个很好的选择,自建基类Controller可以扩展更多的功能。 1.1 验证功能。 后台...

tuerqidi
39分钟前
4
0
解决ubuntu下root用户 不能ftp登陆的问题

解决ubuntu下root用户 不能ftp登陆的问题 一般情况下,由于种种原因ftp是不让root用户远程登陆,但只要你修改以个文件就可以登陆了. 注释掉 /etc/ftpusers 中的root即可 (最后重启vsftpd serv...

15834278076
51分钟前
0
0
《JavaScript高级程序设计(第3版)》阅读笔记

第6章 面向对象的程序设计 6.2 创建对象 6.2.1 工厂模式 JavaScript创建对象(一)—— 工厂模式 6.2.2 构造函数模式 JavaScript创建对象(二)——构造函数模式 6.2.3 原型模式 JavaScript...

Bob2100
55分钟前
1
0
Windows小技巧 – Win+R提高Windows使用效率

追求效率的朋友都需要一款顺手的快速启动工具,Win 平台上有键盘流的RunZ、Listary、ALTRun、Launchy、Wox 和图标流的 Fences、Rolan、 WinLaunch 等,而 Mac 上也有 Alfred、Spotlight。 而...

QQZZFT
58分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部