Java基础_枚举类和注解

章节地址
Java基础_枚举类和注解https://blog.csdn.net/weixin_46349544/article/details/122450137
Java基础_泛型https://blog.csdn.net/weixin_46349544/article/details/122489562
Java基础_Lambda表达式https://blog.csdn.net/weixin_46349544/article/details/123122401
Java基础_函数式接口https://blog.csdn.net/weixin_46349544/article/details/123123017
Java基础_Streamhttps://blog.csdn.net/weixin_46349544/article/details/123382892
Java基础_多线程https://blog.csdn.net/weixin_46349544/article/details/123162259
Java基础_Java比较器https://blog.csdn.net/weixin_46349544/article/details/123236205

1.枚举类

枚举类的理解:
类的对象只有有限个,确定的。我们称此类为枚举类
当需要定义一组常量时,强烈建议使用枚举类I

如何定义枚举类:
方式一: jdk5.0之前,自定义枚举类
方式二:jdk5.0,可以使用enum关键字定义枚举类

1.1 枚举类的主要方法

在这里插入图片描述

1.2 枚举类示例

我一般喜欢将一个表定义为一个枚举类,按表中字段进行类型区分

package com.yfqc.crm.enums;

import org.apache.commons.lang.StringUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * @author wsw
 * price_method表字段枚举类
 */
public enum PriceMethodEnum {
    /**
     * methodType字段 方案类型
     */
    METHODTYPE_DJ("底价", 1, "methodType"),
    METHODTYPE_DJBL("底价补录", 2, "methodType"),
    METHODTYPE_DINGJ("定价",3,"methodType"),
    METHODTYPE_TJ("调价",4,"methodType")

    /**
     * adjustRange字段 调价范围
     */
    ,ADJUSTRANGE_UNSOLDXK("未售(含销控)", 1, "adjustRange")
    ,ADJUSTRANGE_UNSOLDNOTXK("未售(不含销控)", 2, "adjustRange")
    ,ADJUSTRANGE_ALL("全部", 3, "adjustRange")

    /**
     * approvedState字段 审核状态
     */
    ,APPROVEDSTATE_AUDITPASS("审核通过", 1, "approvedState")
    ,APPROVEDSTATE_AUDITFAIL("审核不通过", 2, "approvedState")
    ,APPROVEDSTATE_REAUDITPASS("复核通过", 3, "approvedState")
    ,APPROVEDSTATE_REAUDITFAIL("复核不通过", 4, "approvedState")

    /**
     * effectiveState字段 生效状态
     */
    ,EFFECTIVESTATE_VALID("生效", 1, "effectiveState")
    ,EFFECTIVESTATE_INVALID("未生效", 2, "effectiveState")
    ;

    /**
     * 属性值
     */
    private final String name;
    private final Integer value;
    private final String column;

    /**
     * 分类常量
     */
    public static final String COLUMN_METHODTYPE = "methodType";

    PriceMethodEnum() {
    }

    PriceMethodEnum(String name, Integer value, String column) {
        this.name = name;
        this.value = value;
        this.column = column;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getValue() {
        return value;
    }

    public void setValue(Integer value) {
        this.value = value;
    }

    public String getColumn() {
        return column;
    }

    public void setColumn(String column) {
        this.column = column;
    }

    /**
     * 根据value获取节点枚举对象
     * @param value 值
     * @return
     */
    public static PriceMethodEnum getNameByValueAndColumn(Integer value, String column){
        PriceMethodEnum[] values = values();
        for (PriceMethodEnum item : values) {
            if (item.getValue().equals(value) && item.getColumn().equals(column)){
                return item;
            }
        }
        return null;
    }

    /**
     * 根据分类获取对应的值
     * @param column 分类
     * @return
     */
    public static List<Integer> getValuesByColumn(String column) {
        PriceMethodEnum[] values = values();
        List<Integer> valuesFil = new ArrayList<>(16);
        for (PriceMethodEnum allEnum : values) {
            if(allEnum.getColumn() != null) {
                if (allEnum.getColumn().equals(column)) {
                    if (!StringUtils.isEmpty(allEnum.getColumn())) {
                        valuesFil.add(allEnum.getValue());
                    }
                }
            }
        }
        return valuesFil;
    }
}

如何使用

在这里插入图片描述

2 注解

使用场景:
1 生成文档相关的注解
2 在编译时进行格式检查(JDK内置的三个基本注解)
@Override 限定重写父类方法,该注解只能用于方法
@Deprecated 用于表示所修饰元素(类,方法等)已过时
@SuppressWarnings 抑制编译器警告
在这里插入图片描述
当定义一个变量却未使用时,会出现警告提示
在这里插入图片描述
3 跟踪代码依赖性,实现替代配置文件功能

2.1 如何自定义注解

可以参照 @SuppressWarnings
在这里插入图片描述
新建一个注解:
在这里插入图片描述
使用:

在这里插入图片描述

可指定默认值:
在这里插入图片描述
使用时可以不用赋值不会报错:
在这里插入图片描述

2.2 元注解

元注解就是修饰注解的注解

JDK5.0提供了4个标准的meta-annotation类型,分别是:

  1. Target
  2. Retention
  3. Documented
  4. lnherited

Target:
在这里插入图片描述
Retention:
在这里插入图片描述
Documented:
在这里插入图片描述

2.3 可重复注解

在这里插入图片描述

(1) jdk1.8之前

定义一个注解:
在这里插入图片描述
使用:
在这里插入图片描述

(2) jdk1.8

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.4 类型注解

在这里插入图片描述

案例:修饰泛型:
在这里插入图片描述
在这里插入图片描述
使用时的类型:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值