JavaBean与注解
JavaBean规范
- 使用public修饰
- 字段私有化
- 提供getter/setter方法
- 有一个公共无参构造
作用:减少代码的重复,复杂业务的逻辑和封装数据,是一个可以重用的类
set方法
public修饰,有参数,无返回,方法名用set开头+属性(首字母大写)
注:boolean的get方法是用is+属性(首字母大写)
get方法
public修饰,无参数,有返回,方法名用get开头+属性(首字母大写)
属性与字段之间的关系
属性是属性,字段是字段。属性是用set和get开头的方法,字段是用public、private、default等修饰的成员变量
内省的基本操作
Introspector类是操作内省的入口
- 通过该类可以获取属性名、属性类型等相关信息
- 获取属性对应的方法操作和属性的值等操作
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出现) |
注解需要三方程序参与
- 注解本身
- 被贴的程序元素
- 使用反射给注解赋予功能的类
元注解
@Target表示该注解贴在什么位置,该注解的参数需要使用ElementType枚举类的参数
ElementType枚举类
参数 | 作用 |
---|---|
ANNOTATION_TYPE | 只能修饰在Annotation里 |
CONSTRUCTOR | 只能修饰在构造方法里 |
FIELD | 只能修饰在字段上 |
LOCAL_VARIABLE | 只能修饰在局部变量 |
METHOD | 只能修饰方法 |
PACKAGE | 只能修饰包 |
RARMETER | 只能修饰参数 |
TYPE | 只能修饰类,接口,枚举 |
@Retention表示该注解保存在什么时期,该注解的参数保存在RetentionPolicy枚举类中
参数 | 作用 |
---|---|
SOURCE | 编译之后不存在,复制编译 |
CLASS | 字节码时期,运行时期不存在 |
RUNTIME | 运行时期一直存在 |
@Documented使用该注解修饰的标签会保存在api文档中
@Inherited该注解可以被子类所继承
注解的好处:
- 提高开发的效率
- 编译期间可以校验正确性,
- 保存在class文件中,减低维护成本
Lombok
Lombok是小辣椒插件方便程序员开发,该插件可以提高开发效率,使代码更加的简明,减少大量的冗余代码,极大的减少了后期的维护成本
常见注解
注解 | 作用 |
---|---|
@AllArgsConstructor | 全参数构造器 |
@NoArgsConstructor | 无参数构造器 |
@Getter | get方法 |
@Setter | set方法 |
@ToString | toString方法 |