day17-JavaBean与Anntation

JavaBean与注解

JavaBean规范

  1. 使用public修饰
  2. 字段私有化
  3. 提供getter/setter方法
  4. 有一个公共无参构造

作用:减少代码的重复,复杂业务的逻辑和封装数据,是一个可以重用的类

set方法

public修饰,有参数,无返回,方法名用set开头+属性(首字母大写)

注:boolean的get方法是用is+属性(首字母大写)

get方法

public修饰,无参数,有返回,方法名用get开头+属性(首字母大写)

属性与字段之间的关系

属性是属性,字段是字段。属性是用set和get开头的方法,字段是用public、private、default等修饰的成员变量

内省的基本操作

Introspector类是操作内省的入口

  1. 通过该类可以获取属性名、属性类型等相关信息
  2. 获取属性对应的方法操作和属性的值等操作

Introspector可以通过public static BeanInfo getBeanInfo(Class beanClass,Class stopClass)返回javabean的描述对象,在该方法中第一个参数是需要获取类属性的对象,第二个参数是排除该类的属性对象

BeanInfo类

方法作用
EventSetDescriptor[] getEventSetDescriptors()获得bean的事件描述
PropertyDescriptor[] getPropertyDescriptors()获得bean的属性描述
MethodDescriptor[] getMethodDescriptors()获得bean的方法描述

通过getPropertyDescriptors方法可以获得bean的属性描述

PropertyDescriptor类

方法作用
public String getName()获得属性名称
public Class<?> getPropertyType()获得属性类型
public Method getReadMethod()获得读方法
public Method getWriteMethod()获得写方法

注解

注解就是一些列元数据,它提供数据来解释程序代码,但注解并非代码的一部分。注解对代码的运行效果没有直接的影响。

JDK内置的注解:

注解作用
@Override表示覆写父类方法
@Deprecated表示方法已过时
@SuppressWarings抑制编译器出现警告
@SafeVarargs抑制堆警告(Java7出现)
@Functionallnterface标记函数接口(Java8出现)

注解需要三方程序参与

  1. 注解本身
  2. 被贴的程序元素
  3. 使用反射给注解赋予功能的类

元注解

@Target表示该注解贴在什么位置,该注解的参数需要使用ElementType枚举类的参数

ElementType枚举类

参数作用
ANNOTATION_TYPE只能修饰在Annotation里
CONSTRUCTOR只能修饰在构造方法里
FIELD只能修饰在字段上
LOCAL_VARIABLE只能修饰在局部变量
METHOD只能修饰方法
PACKAGE只能修饰包
RARMETER只能修饰参数
TYPE只能修饰类,接口,枚举

@Retention表示该注解保存在什么时期,该注解的参数保存在RetentionPolicy枚举类中

参数作用
SOURCE编译之后不存在,复制编译
CLASS字节码时期,运行时期不存在
RUNTIME运行时期一直存在

@Documented使用该注解修饰的标签会保存在api文档中

@Inherited该注解可以被子类所继承

注解的好处:

  1. 提高开发的效率
  2. 编译期间可以校验正确性,
  3. 保存在class文件中,减低维护成本

Lombok

Lombok是小辣椒插件方便程序员开发,该插件可以提高开发效率,使代码更加的简明,减少大量的冗余代码,极大的减少了后期的维护成本

常见注解

注解作用
@AllArgsConstructor全参数构造器
@NoArgsConstructor无参数构造器
@Getterget方法
@Setterset方法
@ToStringtoString方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值