美文网首页
新增了一个简化枚举定义的接口和一个简化访问操作的类

新增了一个简化枚举定义的接口和一个简化访问操作的类

作者: 吃竹子的程序熊 | 来源:发表于2020-03-16 20:29 被阅读0次

新增了一个简化枚举定义的接口和一个简化访问操作的类:IEnumIEnumAccessor

public interface IEnum {

    /**
     * 可读性名称
     */
    String getName();

    /**
     * 编码
     */
    Integer getCode();
}
/**
 * IEnum实体访问类
 *
 *
 * @author HanQi [Jpanda@aliyun.com]
 * @version 1.0
 * @since 2019/12/13 17:13
 */
public final class IEnumAccessor {

    @SuppressWarnings({"unchecked", "rawtypes"})
    public static <T extends Enum & IEnum> T of(String name, Class<T> clazz) {
        // 获取所有枚举数据
        IEnum[] enums = clazz.getEnumConstants();
        Optional<IEnum> optional = Stream.of(enums).filter((v) -> v.getName().equals(name)).findFirst();
        return (T) optional.orElse(null);

    }

    @SuppressWarnings({"unchecked", "rawtypes"})
    public static <T extends Enum & IEnum> T of(Integer code, Class<T> clazz) {
        // 获取所有枚举数据
        IEnum[] enums = clazz.getEnumConstants();
        Optional<IEnum> optional = Stream.of(enums).filter((v) -> v.getCode().equals(code)).findFirst();
        return (T) optional.orElse(null);

    }
}

/**
 * @author HanQi [Jpanda@aliyun.com]
 * @version 1.0
 * @since 2019/12/13 17:35
 */
public class IEnumAccessorTest {

    @Test
    public void of() {
        assert IEnumAccessor.of("第一个", IEnumImpl.class).getCode() == 1;
        assert IEnumAccessor.of("第二个", IEnumImpl.class).getCode() == 2;
        assert IEnumAccessor.of(1, IEnumImpl.class).getName().equals("第一个");
        assert IEnumAccessor.of(2, IEnumImpl.class).getName().equals("第二个");
        assert IEnumAccessor.of(3, IEnumImpl.class) == null;
        assert IEnumAccessor.of("第三个", IEnumImpl.class) == null;
    }


    enum IEnumImpl implements IEnum {
        FIRST("第一个", 1),
        SECOND("第二个", 2);
        private String name;
        private Integer code;

        IEnumImpl(String name, Integer code) {
            this.name = name;
            this.code = code;
        }

        /**
         * 可读性名称
         */
        @Override
        public String getName() {
            return this.name;
        }

        /**
         * 编码
         */
        @Override
        public Integer getCode() {
            return this.code;
        }
    }
}

相关文章

  • 新增了一个简化枚举定义的接口和一个简化访问操作的类

    新增了一个简化枚举定义的接口和一个简化访问操作的类:IEnum和IEnumAccessor。

  • Flutter之Dart语言 面向对象(二)& 枚举 & 泛型

    目录 接口 Mixins 枚举 泛型 1. 接口 类和接口是同一的,类就是接口 每个类都隐式的定义了一个包含所有实...

  • 二、类型初步

    一. 类和接口 类的定义默认为 public 可省略,类内无内容可省略{} 可以简化为: 类的实例化可以省掉new...

  • iOS 外观模式

    外观模式封装,隐藏实现细节。简化了操作,简化流程,解耦,简化操作逻辑。 应用,适用场景复杂的子系统,改进使用操作类...

  • 新手看JS的六种继承方式

      有了实体,为了简化定义,自然就有了继承的概念,比如已经定义了一个“人”类,后面需要详细分出“男人”和“女人”,...

  • 枚举--java24(02/17/2016)

    如何自定义枚举类如何使用enum定义枚举类、枚举类的主要方法实现接口的枚举类 JDK1.5之前需要自定义枚举类JD...

  • 用枚举简化登录操作

    今天的内容翻译自Simplifying Login with Swift Enums,隐隐约约的记得好像有人翻译过...

  • Java篇-枚举的使用

    一 : 自定义枚举类 枚举类调用 二 : 使用enum关键字定义枚举类 让枚举类实现接口: 可以让不同的枚举类的对...

  • Wireshark+Chrome,HTTPS数据包抓取配置

      作为一个程序员,很多时候会想把自己经常访问的网站或使用程序特定功能做一个API接口,以便简化繁琐的操作。同时也...

  • Netty源码分析-Channel分类

    先来看下Channel相关类图: 为了便于理解,上面的类图对层次关系做了一定的简化。Channel接口定义了Net...

网友评论

      本文标题:新增了一个简化枚举定义的接口和一个简化访问操作的类

      本文链接:https://www.haomeiwen.com/subject/jlvoehtx.html