文档章节

JavaBean和对应的内省API

小和尚敲代码
 小和尚敲代码
发布于 2015/03/02 16:38
字数 461
阅读 76
收藏 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变得十分简单。

© 著作权归作者所有

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

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

_-Leon-_
2014/07/14
0
0
Java内省机制简单了解_Introspector

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

秋风醉了
2014/07/10
0
0
Java基础巩固笔记(1)-反射

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

卟想苌亣
2017/11/23
0
0
JAVA 内省(introSpector)

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

xiahuawuyu
2012/11/14
0
0
JavaBean和Map的相互转换

JavaBean和Map的相互转换 一、JavaBean 1.什么是JavaBean? JavaBean其实就是一种遵循特定写法的类,必须遵循一定的规范: 类必须由public修饰,并且保证有公共的无参数的构造器 包含操作属性...

Ala6
11/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
6
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
5
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
33
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部