- 浏览: 114683 次
- 性别:
- 来自: 广西
文章分类
最新评论
-
greemqqran:
这方法 源码,是怎么的哦?
可变参数,数组与集合之间的转换 -
greemqqran:
Arrays.asList
可变参数,数组与集合之间的转换 -
ricoyu:
引用? super E:接收的是E类型对象应该是: ? sup ...
泛型-
package com.dhcool.introspect; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import com.dhcool.bean.Student; /** * 内省处理JavaBean有两种常用的方式: * 1.创建出PropertyDscriptor,创建的时候要给出要获取属性的名称和具体要获取的类Class * 得到PropertyDscriptor后就可以去调用它的方法来处理,主要还是pd.getReadMethod();获取属性值,pd.getWriteMethod();设置属性值,得到具体的方法Method * 由Method去invoke()然后传递具体的参数(反射调用) ,就可以设置获取相应的值 * * * 2.用Introspector.getBeanInfo(student.getClass());去获取特定类的BeanInfo,就是Bean的包装信息 * 然后根据BeanInfo去获取 属性描述器PropertyDscriptors获取到的是一个PropertyDscriptor[]数组 * 然后迭代这个数组,获取相应属性的属性描述器 PropertyDscriptor * 有了PropertyDscriptor就可以去获取相应的方法,之后就可以反射调用相应的方法了 * * */ public class IntrospectTest { public static void main(String[] args) throws Exception { Student student = new Student(); String propertyName = "name"; setProperty(student, propertyName,"蓝"); System.out.println(getProperty(student, propertyName)); } //获取属性值 private static Object getProperty(Object student, String propertyName) throws IntrospectionException, IllegalAccessException, InvocationTargetException { /*PropertyDescriptor pd = new PropertyDescriptor(propertyName,student.getClass()); Method method = pd.getReadMethod(); return method.invoke(student);*/ //另一种处理方式 BeanInfo beanInfo = Introspector.getBeanInfo(student.getClass()); PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors(); Object obj = null; for(PropertyDescriptor pd : pds){ if(pd.getName().equals(propertyName)){ Method method = pd.getReadMethod(); obj = method.invoke(student); } } return obj; } //设置属性值 private static Object setProperty(Object student, String propertyName, Object value) throws IntrospectionException, IllegalAccessException, InvocationTargetException { //PropertyDescriptor属性描述器,用于获取属性的一些列信息,初始化的时候要给定要获取的属性名称,和要获取的类class PropertyDescriptor pd = new PropertyDescriptor(propertyName,student.getClass()); //获取setName方法 Method methodName = pd.getWriteMethod(); //获取了这个方法之后就去调用执行这个方法。如果是静态的方法就不用传入具体的对象,如果是非静态的就要传入具体的对象 return methodName.invoke(student,value); } }
发表评论
-
动态代理+注解实现用户权限控制
2012-12-23 00:01 1250首先第一步我们需要定义一个接口UserDao p ... -
JDK动态代理模式
2012-12-22 21:51 863package cn.dhcool.dynamic.proxy ... -
代理proxy模式
2012-12-22 20:45 0静态代理模式: 需要有一个公共的借口,还有一个真实的实现类, ... -
工厂模式下出现的问题-null异常
2012-12-15 18:31 874遇到了一个问题: public class Dao ... -
内部类详解
2011-12-09 21:23 594从Java1.1开始引入了内部类以来,它就引起了人们的激烈争论 ... -
动态代理实现
2011-11-22 02:03 989package com.dhcool.proxy; ... -
线程锁
2011-10-10 13:27 783sleep(), wait(),yield(),这3个方法,s ... -
类似百度谷歌分页算法实现
2011-09-08 15:58 1543<%@ page language="j ... -
充当服务端代码
2011-08-05 16:53 636import java.net.*; import java ... -
获取文件中邮件的示例
2011-08-05 12:25 707import java.util.regex.*; impo ... -
正则表达式常用字符
2011-08-05 12:22 826构造 匹配 字符 x 字符 x ... -
正则表达式
2011-08-05 12:16 778第一种:1.定义匹配规则如:String qqreg = &q ... -
InetAddress
2011-08-04 21:59 858import java.net.*; class Inet ... -
B/S socket
2011-08-04 21:08 997import java.net.*; import java ... -
TCP多线程文件上传
2011-08-04 14:51 851/* 上传图片 */ import java.io.*; ... -
网络编程基础
2011-08-04 14:25 802网络编程: 网络通讯中所需要了解的一些内容。 T ... -
一道题
2011-08-02 21:05 578/* 有五个学生,每个学生有3门课的成绩,从键盘输入以上数据 ... -
TCP
2011-08-02 20:46 715import java.net.*; import ja ... -
UDP
2011-08-02 20:35 819import java.net.*; import java ... -
mypad小程序
2011-08-02 15:48 697package menupack; import jav ...
相关推荐
特别详细的java内省思维导图,全方面介绍java内省的功能以及用法用处。
内省机制
小议布赖恩·温的公众理解科学理论研究内省模型.doc
JavaBean及内省,介绍了JavaBean的概念、属性、使用、执行原理以及对内省的介绍
NULL 博文链接:https://newjueqi.iteye.com/blog/397132
NULL 博文链接:https://tianyami.iteye.com/blog/1576854
4.9反射内省.txt.xmind
主要介绍了Java 内省(Introspector)深入理解的相关资料,需要的朋友可以参考下
该项目旨在提供重型重构和内省工具,可以独立使用或作为文本编辑器的后端来提供智能代码完成。
内省
虚拟机内省技术研究,杨先强,双锴,随着云计算的流行,虚拟机内省(Virtual Machine Introspection, VMI)技术及工具逐渐被用来监控IaaS云中虚拟机的行为。在这些技术的帮助下,�
浅谈初中思想品德教学中的启迪与内省
Introspected 可序列化数组和JSON友好对象的内省
内含commons-beanutils-1.9.2.jar,commons-logging-1.2.jar
return-to-abort() - 使用代码内省来防止堆栈崩溃
JAVA的内省机制(introspector)与反射机制(reflection).docx
BeastForm-内省数据库并动态生成模型 版本 版本0.000001 概要 use BeastForm; use Mojolicious::Lite; get "/" => sub { $_[0]->stash( drivers => BeastForm::drivers ); $_[0]->render( template => "form....
初中语文语文论文祝福:“多余人”痛苦内省的矛盾呈现
个人总结文档,结合了张孝祥老师的PPT,共有7个文档,分别是基础知识、反射、内省、注解、泛型、类加载器、动态连接
JAVA反射机制、注解、动态加载类、动态调用对象方法