《张三记录-java》枚举 泛型 内部类

一.枚举

1.简介

枚举类型是JDK1.5引入的新的类型,本质上就是一个类,是自定义的数据类型

作用:

  • 用来限制可能的取值个数
  • 提高代码可读性和扩展性

适用的场合:有限的取值个数

2.用法

使用 enum 关键字 (enumeration)

定义方法 public enum 枚举类型名{ }

特性:

  • 枚举类中可以属性,方法,构造方法。

  • 枚举类中的构造方法必须为私有的,不允许外部创建对象,只能在内部创建

  • 在内部创建对象时,位于当前类的第一行

    有参的构造: 对象名(参数)

    无参的构造:对象名() 小括号可以省略

二.泛型

1.简介

泛型就是参数化类型,将一个数据类型作为参数

在定义时不知道用什么类型,在使用时指定具体的类型,类似于参数,称为参数化类型

分类:

  • 泛型类
  • 泛型接口
  • 泛型方法

2.泛型类

  • 表示类中有一个未知的类型

  • 定义方法 : public class 类名{ },T表示一种数据类型,是泛型的类型参数,可以使用任意标识 一般 使用 T K V E

  • 可以在类中使用T,表示一个类型

  • 在使用类时需要在类名后通过<类型>指定具体类型,就是将T表示的类型传入

    类名<类型> 对象名 = new 类名<>();

  • 泛型只能传入引用类型,如果是基本类型,就使用包装类

3.泛型接口

  • 表示接口中有一个未知的类型

  • 定义方法 : public interface 接口名{ }

  • 可以在接口中使用T,表示一个类型

  • 在使用类时需要在接口名后通过<类型>指定具体类型,就是将T表示的类型传入

4.泛型方法

  • 表示方法中有一个未知的类型
  • 定义方法 : public 修饰符 返回值类型 方法名(){ }
  • 可以在方法中使用T,表示一个类型
  • 在调用方法时指定具体的类型
  • 应用场景: 如果类和接口都没有定义泛型,但想在方法中使用泛型,此时可以定义为泛型方法

5.泛型的特性

  • 泛型的类型参数必须是引用类型

  • 泛型的类型参数可以有多个

  • 可以使用泛型通配符,两种

    <? extends 类型T> 参数类型必须是T或者T的子类 <? super 类型T> 参数类型必须是T或者T的父类

三.内部类

1.简介

定义在另一个类里面的类,称为内部类 InnerClass

包含内部类的类,称为外部类 Outer Class

分类:

  1. 成员内部类
  2. 静态内部类
  3. 局部内部类
  4. 匿名内部类,最常用

2.用法

2.1成员内部类

在外部类中访问内部类: 可以访问内部类中所有的属性,方法,包含private修饰的。 对象.属性名/方法名

在外部类外面访问内部类:不能访问private修饰的属性,方法。 先创建外部类对象,在创建内部类对象 对象.属性名/方法名

在内部类中访问外部类: 直接访问

2.2 静态内部类

使用static修饰的成员内部类

2.3局部内部类

局部内部类,也称为方法内部类,定义在外部类的方法中的类

  • 只能在外部类的方法中使用

2.4匿名内部类

就是没有名字的内部类。

创建匿名内部类,必须作为new语句的一部分来声明

类名/接口名 对象名  = new  类名/接口名(){
    //匿名内部类
    
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis-Plus 是一个优秀的 MyBatis 增强工具,在实际开发中我们经常需要使用枚来表示一些常量,如订单状态、性别等。而 MyBatis-Plus 对枚的处理也非常方便,下面我来介绍一下如何使用 MyBatis-Plus 枚字段映射。 1. 定义枚 首先我们需要定义一个枚,如下所示: ```java public enum StatusEnum { ENABLE(1, "启用"), DISABLE(0, "禁用"); private Integer value; private String desc; StatusEnum(Integer value, String desc) { this.value = value; this.desc = desc; } public Integer getValue() { return value; } public String getDesc() { return desc; } } ``` 2. 实体类中使用枚 在实体类中使用枚,如下所示: ```java public class User { private Long id; private String name; private StatusEnum status; // getter 和 setter 略 } ``` 3. 数据库表中使用枚字段 在数据库表中使用枚字段,如下所示: ```sql CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `status` tinyint(4) NOT NULL COMMENT '状态:1=启用,0=禁用', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表'; ``` 其中,`status` 字段类为 `tinyint`,用于存储枚的值。 4. 枚字段映射 在 MyBatis-Plus 中,我们可以使用 `@EnumValue` 和 `@EnumValue` 注解来进行枚字段映射。具体使用方法如下: ```java public class User { private Long id; private String name; @EnumValue private StatusEnum status; // getter 和 setter 略 } ``` 在 `status` 字段上添加 `@EnumValue` 注解,表示该字段是枚的值。 ```java public interface UserMapper extends BaseMapper<User> { } ``` 在 Mapper 中继承 `BaseMapper` 接口即可,无需做任何其他配置。 5. 查询操作 在查询操作时,MyBatis-Plus 会自动将数据库中存储的枚的值映射为实体类中的枚。例如: ```java User user = userMapper.selectById(1L); System.out.println(user.getStatus()); // 输出:ENABLE ``` 在上述代码中,MyBatis-Plus 会自动将数据库中的 `status` 字段的值 `1` 映射为实体类中的 `StatusEnum.ENABLE`。 6. 插入和更新操作 在插入和更新操作时,MyBatis-Plus 会自动将实体类中的枚映射为数据库中的枚的值。例如: ```java User user = new User(); user.setName("张三"); user.setStatus(StatusEnum.ENABLE); userMapper.insert(user); ``` 在上述代码中,MyBatis-Plus 会自动将实体类中的 `StatusEnum.ENABLE` 映射为数据库中的 `status` 字段的值 `1`。 综上所述,使用 MyBatis-Plus 枚字段映射非常方便,只需要在实体类中添加 `@EnumValue` 注解即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值