内省(Inspector)与注解(Annotation)

目录1.内省机制2.内省机制对于属性的操作3.内省属性的注意事项4.注解的功能5.注解声明6.注解修饰目标7.注解生命周期8.注解属性9.注解的使用10.反射对注解的操作1.内省机制 在实际编程中,我们常常需要一些用来包装值对象的类,例如Student、Employee、Order,这些类中往往没有业务方法,只是为了把需要处理的实体对象进行封装,有这样的特征: 属性都是私有的; 有无参的public构造方法; 对
摘要由CSDN通过智能技术生成

目录

1.内省机制

2.内省机制对于属性的操作

3.内省属性的注意事项

4.注解的功能

5.注解声明

6.注解修饰目标

7.注解生命周期

8.注解属性

9.注解的使用

10.反射对注解的操作


1.内省机制

  • 在实际编程中,我们常常需要一些用来包装值对象的类,例如Student、Employee、Order,这些类中往往没有业务方法,只是为了把需要处理的实体对象进行封装,有这样的特征:

    • 属性都是私有的;

    • 有无参的public构造方法;

    • 对私有属性根据需要提供公有的getXxx方法以及setXxx方法;例如属性名称为name,则有getName方法返回属性name值,setName方法设置name值;注意方法的名称通常是get或set加上属性名称,并把属性名称的首字母大写;这些方法称为getters/setters;getters必须有返回值没有方法参数;setter值没有返回值,有方法参数;

  • 符合这些特征的类,被称为JavaBean

  • 内省(Inspector)机制就是基于反射的基础,Java语言对Bean类属性、事件的一种缺省处理方法。

  • 只要类中有getXXX方法,或者setXXX方法,或者同时有getXXX及setXXX方法,其中getXXX方法没有方法参数,有返回值;setXXX方法没有返回值,有一个方法参数;那么内省机制就认为XXX为一个属性;

  • 与Java内省有关的主要类及接口有:

    • java.beans.Introspector类: 为获得JavaBean属性、事件、方法提供了标准方法;通常使用其中的getBeanInfo方法返回BeanInfo对象;

    • Java.beans.BeanInfo接口不能直接实例化,通常通过Introspector类返回该类型对象,提供了返回属性描述符对象(PropertyDescriptor)、方法描述符对象(MethodDescriptor) 、bean描述符(BeanDescriptor)对象的方法

    • Java.beans.PropertyDescriptor类:用来描述一个属性,该属性有getter及setter方法;

2.内省机制对于属性的操作

  • 可以使用PropertyDescriptor类的方法获取属性相关的信息,例如getName方法返回属性的名字:

  • PropertyDescriptor类中定义了方法可以获取该属性的getter和setter方法:

  • 案例

    //在上篇(反射)的Person类中添加一个方法 
       public int getScore(){
            return 11;
        }
    import com.bx.reflect.Person;
    
    import java.beans.BeanInfo;
    import java.beans.IntrospectionException;
    import java.beans.Introspector;
    import java.beans.PropertyDescriptor;
    import java.lang.reflect.Constructor;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    
    public class IntrospectorTest {
        public static void main(String[] args) throws IntrospectionException, ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
            //Introspector内省类  静态方法getBeanInfo获取对应类的BeanInfo对象
            BeanInfo beanInfoPerson = Introspector.getBeanInfo(Person.class);
            //PropertyDescriptor定义属性类
            //获取Person所有属性,使用BeanInfo返回PropertyDescriptor对象数组
            PropertyDescriptor[] propertyDescriptors = beanInfoPerson.getPrope
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值