java的内省
来源:互联网 发布:好的数据圈网站 编辑:程序博客网 时间:2024/06/05 06:41
java的反射技术,提供给了开发人员操作成员变量、成员方法和构造函数等等方法。很多时候,常常要用对象的属性来封装数据,反射技术完成这类操作过于繁琐,于是就有了内省的出现,它的作用,就是用来操作对象的属性的,大大减轻代码量。
首先了解一下什么是JavaBean:
javaBean其实是一个java类,只是这个类要有一定的规范,其类必须是具体和公共的,并且要具有无参数的构造函数。当然,关于javaBean的规范还有很多,看个例子应该可以很容易明白:
public class Person {private String name;private int age;public Person(){}public Person(String name, int age) {this.name = name;this.age = age;}public int getAge() {return age;}public String getName() {return name;}public void setAge(int age) {this.age = age;}public void setName(String name) {this.name = name;}}
java的内省是用来操作对象属性的,那么,上述的Person类有多哪些属性呢?
name属性 age属性 class属性(这个属性是从Object类继承过来的,Object中有一个getClass()方法)
下面介绍如何通过内省,简单的操作一下Person的属性:
import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.Method;public class IntrospectorTest {public static void main(String[] args) throws Exception {// test1(); //内省的基本操作test2(); // 直接获取某个属性的属性描述器}// 直接获取某个属性的属性描述器private static void test2() throws Exception {// 直接获取Person的name属性的属性描述器PropertyDescriptor pd = new PropertyDescriptor("name", Person.class);// 由属性获得其setName()方法Method write = pd.getWriteMethod();Person p = new Person();// 执行方法write.invoke(p, "java");// 获得getName()方法Method read = pd.getReadMethod();String name = (String) read.invoke(p, null);System.out.println(name);}// 内省的基本操作private static void test1() throws Exception {// 获取Bean信息的封装对象BeanInfo info = Introspector.getBeanInfo(Person.class);// 下面的这个info不会拿到其继承下来的属性// BeanInfo info = Introspector.getBeanInfo(Person.class,Object.class);// 得到所有的属性描述器PropertyDescriptor[] pds = info.getPropertyDescriptors();for (PropertyDescriptor p : pds) {// 通过属性描述器得到属性名System.out.println(p.getName());// 通过属性描述器得到属性类型System.out.println(p.getPropertyType());}}}
- java的内省机制
- Java的内省技术
- java 内省的使用
- java的内省
- Java内省的使用
- 浅谈java的内省
- Java的内省
- Java内省的学习
- java的内省和反射
- Java的内省(introspector)
- java的内省与反射
- java的反射和内省
- java的内省与反射
- 《JavaBean》-----Java的内省机制
- Java反射的应用 --- 内省
- 模拟Java内省的功能
- java内省机制 + 内省是什么 + 内省实现方式 + 和反射的区别
- JAVA 内省
- 2011程序员薪资调查报告全文发布
- C/C++ 位域之一
- 优先队列-双端堆
- XML第五讲:使用DTD验证XML有效性深入剖析
- Java中 jdbc 调用存储过程 用hibernate连接数据库
- java的内省
- 作业6-3
- java字符串取千分位数。
- window 下的socket编程!!
- Python实现简单的打包
- 虚拟文件系统
- C/C++ 位域之二
- 如何在两个ViewController之间传递数据
- Integer.parseInt()和Integer.valueOf()有什么区别