文档章节

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
JavaWeb13-HTML篇笔记(一)

1.1 上次课内容回顾: JSP : 1.2 使用MVC设计模式完成转账的案例:1.2.1 需求: 设计一个页面,输入三个值,一个是付款人,一个是收款人,一个是转账的金额.不能出现付款人的钱被扣除而收款人没有收...

我是小谷粒
05/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

nginx模块学习六 add_header 跨域访问

语法 Syntax: add_header name value [always];Default: --Context:http,server,location,if in location 例:/etc/nginx/conf.d/default.conf server {    listen       80; ......

Romanceling
今天
0
0
SpringBoot初探

#SpringBoot初探 三种创建SpringBoot项目的方式: 第一种:使用IDEA创建maven项目,选择maven-archetype-quickstart; 第二种:使用IDEA创建Spring Initializer,选择web组件; 第三种:使用...

向码而生
今天
2
0
IO

JAVA中IO技术:BIO、NIO、AIO 1、同步异步、阻塞非阻塞概念 同步和异步是针对应用程序和内核的交互而言的。 阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方...

DemonsI
今天
0
0
org.apache.commons 常用工具类

一. org.apache.commons.io.IOUtils closeQuietly 关闭一个IO流、socket、或者selector且不抛出异常。通常放在finally块。 toString 转换IO流、 Uri、 byte[]为String。 copy IO流数据复制,...

sprouting
今天
0
0
linux使用Inotify监控目录或者文件状态变更

基本概念: Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。 需求: 1.有一个文件采集进程,...

mickelfeng
今天
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部