三、内省与注解

JavaBean

四个规范

  • 类使用public修饰
  • 字段私有化
  • 每一个字段提供get/set方法
  • 提供无参构造器
  • 只有符合这四个规范才能称为JavaBean对象

属性和字段的区别

  • 属性:方法名符合getXxx/setXxx/isXXX格式

    • 若为getXxx格式,有返回值,无参数
    • 若为setXxx格式,无返回值,有参数
    • 若为isXxx格式,返回值为布尔值
    • 符合以上情况,则xxx为属性,例如方法名为getName,name是属性
    • 字段可能不是属性,属性也可能不是字段,有时字段也是属性
  • 字段:类中成员变量

  • 只要符合以上情况方可称为属性或字段,不一定要在符合JavaBean规范的类中

LomBok插件

LomBok概述

  • LomBok是一个他人写好的插件,使用该插件可以省略编写大量的get/set/toString等方法,但是会降低一点程序运行效率

安装流程

  • 在IDEA中,点击File -> Settings -> plugings,搜索LomBok插件并点击install,重启IDEA
  • 导入LomBok的Jar包,添加到库中

使用流程

  • 在需要编写get/set/toString等方法的类上方使用相关注解即可

常用注解

  • @Date:编写所有提供的方法
  • @Getter:编写字段的get方法
  • @Setter:编写字段的set方法
  • @toString:重写父类的toString方法

内省

概述

  • 内省是字节码对象按照set/get规范获取类的属性和方法的过程

常用方法

  • Introspector类
    • static BeanInfo getBeanInfo(字节码对象):获取JavaBean信息
  • BeanInfo类
    • PropertyDescriptors[] getPropertyDescriptors():获取JavaBean内的属性描述器
  • PropertyDescriptor类
    • Method getReadeMethod():获取属性的get方法
    • Method getWriteMethod():获取属性的set方法
    • String getName():获取属性名
  • 获取属性值
    •   Object value = beanInfo.getReadMethod().invoke(obj);
      

使用场景

  • JavaBean对象转换为Map对象
  • Map对象转换为JavaBean对象

注解

注解的概念

  • @开头的叫注解,注解可以声明在类、接口、枚举、方法、变量上,使用注解可以为被标记的物提供一种功能,有些是辅助编译用的功能,如@Override,可以检测被标记的方法是否成功重写父类的方法

常见的注解

  • @Override:检测被标记的方法是否成功重写父类的方法
  • @Test:使被标记的方法在类中能独立运行

元注解的概念

  • 元注解是只用于标记在注解上的注解,用于辅助注解

常用的元注解

  • @Target:被标记的注解能使用在哪里,属性被封装在ElementType枚举类中
  • @Inherited:被标记的注解能被子类所继承
  • @Retention:属性被封装在RetentionPolicy枚举类中
    • SOURCE:只能存活在编译时期
    • CLASS:只能存活到字节码时期
    • RUNTIME:只要程序一直运行,该注解就一直存在

注解基本使用

  • 定义注解
    • 若只有一个属性名为value的属性,使用该注解时,属性名可以省略
    • 可以使用default关键字给属性赋默认值
  • 使用注解:直接使用@注解名贴在被标记物上

数据库

关于数据库的理解

  • 数据库是一个系统,里面有多个数据库,数据库与数据库之间互不影响,每个数据库可以定义n张表,每张表里可以定义n个字段,每个字段对应一个值
  • 一张表对应一个JavaBean对象,一个字段对应对象中的一个属性,一个值对应对象中的一个属性值

简单的分类

  • 关系型数据库
    • MySQL
    • SQL Server
  • 非关系型数据库
    • Redis
    • MongoDB
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容