有关内省的一些事

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有关内省的一些事相关的知识,希望对你有一定的参考价值。

首先什么是内省呢,内省就是用来获得JavaBean的属性已经属性的getset方法

那什么是JavaBean文件呢

JavaBean文件就是,有特定格式的一个java类。有如下的条件我们就能够称为一个JavaBean

1.有无参的构造方法

2.属性是私有的

3.对于私有的属性提供公共的get,set方法。

 

对于这样的文件我们就能够成为是一个JavaBean文件了。

那我们怎么获得它的属性和对应的getset方法了?

这个我们需要引入一个 Introspector。这个类中有一个静态的方法

 

static BeanInfo     getBeanInfo(Class<?> beanClass)

(在 Java Bean 上进行内省,了解其所有属性、公开的方法和事件。)

 

这个方法返回一个BeanInfo类型的对象,获得了Bean文件的信息。我们在通过BeanInfo这个对象,调用它的方法 getPropertyDescriptors(),得到一个属性描述器。这个返回的是一个数组。数组中包含了所有的属性。

 

我们这里需要明确,一个Bean文件的属性,是由get,set确定的,并不是写了几个属性。

 

PropertyDescriptor[]  getPropertyDescriptors()

 

我们接下来可以对得到的属性数组进行遍历,可以得到每一个属性。

然后我们通过,

属性.getReadMethod()就能获得get方法

属性.getWriteMethod()就能获得set方法

 

 

public void demo1() throws Exception{

// 获得了Bean的信息

  BeanInfo beanInfo = Introspector.getBeanInfo(User.class);

  // 获得Bean的属性描述

  PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();

  for(PropertyDescriptor pd:pds){

    System.out.println(pd.getName());

    pd.getReadMethod(); // 获得get方法

    pd.getWriteMethod();// 获得set方法.

  }

}

 

以上是关于有关内省的一些事的主要内容,如果未能解决你的问题,请参考以下文章

有关HealthKit的那些事

72.8接口和内省

有关 onSaveInstanceState() 那点事

有关原码,反码,补码那些事

[oldboy-django][4python面试]有关yield那些事

PHP有关JWT(Json Web Token)的那些事