文档章节

JavaBean和对应的内省API

小和尚敲代码
 小和尚敲代码
发布于 2015/03/02 16:38
字数 461
阅读 73
收藏 0
点赞 0
评论 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
博文 85
码字总数 28687
作品 0
南昌
程序员
JavaBean详解一

一、关于javabean javabean是固定写法的java类 书写格式为: 1)必须有无参构造函数 2)属性必须私有, 我们称为字段 3)提供标准的getter和setter 例: name 字段 的getter: String getName() ...

binhu ⋅ 2014/07/06 ⋅ 0

Java内省(Introspector)

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

_-Leon-_ ⋅ 2014/07/14 ⋅ 0

javaBean的内省操作

反射技术实际是已经能够完全满足我们对javaBean的各种操作了,但是为了方便JDK还是为我们提供了一套操纵JavaBean的API,我们称这套API为内省操作(Introspector),下面示范一下通常的两种内省...

KrisX ⋅ 2014/05/02 ⋅ 0

Java内省机制简单了解_Introspector

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

秋风醉了 ⋅ 2014/07/10 ⋅ 0

Java基础巩固笔记(1)-反射

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

卟想苌亣 ⋅ 2017/11/23 ⋅ 0

第16篇-JAVA 类加载与反射

第16篇-JAVA 类加载与反射 每篇一句 :敢于弯曲,是为了更坚定的站立 初学心得: 追求远中的欢声笑语,追求远中的结伴同行 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-05-12| JAVA 类加载与反射...

JEEP711 ⋅ 2017/08/12 ⋅ 0

JAVA 内省(introSpector)

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

xiahuawuyu ⋅ 2012/11/14 ⋅ 0

Java基础-----JavaBean内省机制

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

baibuxiha ⋅ 2016/04/14 ⋅ 0

JavaWeb13-HTML篇笔记(一)

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

我是小谷粒 ⋅ 05/29 ⋅ 0

java基础巩固笔记(1)-反射

java基础巩固笔记(1)-反射 标签: java [TOC] 反射 反射:将类的属性和方法映射成相应的类。 反射基本使用 获取Class类的三种方法: 类名.class 对象名.getClass() Class.forName("要加载的类...

brianway ⋅ 2016/01/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 1

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

CentOS开机启动subversion

建立自启动脚本: vim /etc/init.d/subversion 输入如下内容: #!/bin/bash## subversion startup script for the server## chkconfig: 2345 90 10# description: start the subve......

随风而飘 ⋅ 昨天 ⋅ 0

Nginx + uwsgi @ubuntu

uwsgi 安装 sudo apt-get install python3-pip # 注意 ubuntu python3默认没有安装pippython3 -m pip install uwsgi 代码(test.py) def application(env, start_response): start_res......

袁祾 ⋅ 昨天 ⋅ 0

版本控制工具

CSV , SVN , GIT ,VSS

颖伙虫 ⋅ 昨天 ⋅ 0

【2018.06.19学习笔记】【linux高级知识 13.1-13.3】

13.1 设置更改root密码 13.2 连接mysql 13.3 mysql常用命令

lgsxp ⋅ 昨天 ⋅ 0

LVM

LVM: 硬盘划分分区成物理卷->物理卷组成卷组->卷组划分逻辑分区。 1.磁盘分区: fdisk /dev/sdb 划分几个主分区 输入t更改每个分区类型为8e(LVM) 使用partprobe生成分区的文件:如/dev/sd...

ZHENG-JY ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部