我猜,你很少使用枚举

从ROS2到ROS1:Lightning-LM激光SLAM模块的移植实践与核心代码解析 本文详细解析了将高性能激光SLAM算法Lightning-LM从ROS2移植到ROS1的完整实践过程。针对ROS1与ROS2在节点初始化、话题通信、参数服务器及TF发布等核心API的差异,文章提供了loc_system和slam模块的核心代码改造示例,并给出了适配catkin的CMakeLists.txt与package.xml配置方案,帮助开发者在现有ROS1生态中高效集成先进的SLAM模块。 阅读详情

枚举

1、定义枚举类

Java语言从设计之初并没有提供枚举的概念,所以开发者不得不使用多例模式来代替枚举的解决方案,直到JDK 1.5开始,Java支持了枚举结构的定义,提供了一个新的关键字:enum,利用此关键字可以实现枚举类型的定义,并且通过枚举可以简化多例模式设计的实现。

public enum UserRole {
    // 系统管理员
    ROLE_ROOT_ADMIN,
    // 订单管理员
    ROLE_ORDER_ADMIN,
    // 普通用户
    ROLE_NORMAL
}

定义了一个UserRole的枚举类,并在类的内部提供有UserRole类的三个实例化对象,所有枚举类的对象名称全部采用了大写字母定义,这一点是符合多例设计模式要求的,同时枚举类对象的名称也可以采用中文的形式进行定义,在外部调用时可以直接通过枚举名称进行对象的调用。

1.1、枚举常用的方法

范例:枚举的一些常用的方法

public enum UserRole {
        // 系统管理员
        ROLE_ROOT_ADMIN,
        // 订单管理员
        ROLE_ORDER_ADMIN,
        // 普通用户
        ROLE_NORMAL
}
public class EnumTestDemo {
    public static void main(String[] args) {
        UserRole role1 = UserRole.ROLE_ROOT_ADMIN;
        UserRole role2 = UserRole.ROLE_ORDER_ADMIN;
        UserRole role3 = UserRole.ROLE_NORMAL;

        // values()方法:返回所有枚举常量的数组集合
        for (UserRole role : UserRole.values()) {
            System.out.println(role);
        }
        System.out.println();
        // 打印:
        // ROLE_ROOT_ADMIN
        // ROLE_ORDER_ADMIN
        // ROLE_NORMAL

        // ordinal()方法:返回枚举常量的序数,注意从0开始
        System.out.println(role1.ordinal()); // 打印0
        System.out.println(role2.ordinal()); // 打印1
        System.out.println(role3.ordinal()); // 打印2
        System.out.println();

        // compareTo()方法:枚举常量间的比较
        System.out.println(role1.compareTo(role2)); //打印-1
        System.out.println(role2.compareTo(role3)); //打印-1
        System.out.println(role1.compareTo(role3)); //打印-2
        System.out.println();

        // name()方法:获得枚举常量的名称
        System.out.println(role1.name()); // 打印ROLE_ROOT_ADMIN
        System.out.println(role2.name()); // 打印ROLE_ORDER_ADMIN
        System.out.println(role3.name()); // 打印ROLE_NORMAL
        System.out.println();

        // valueOf()方法:返回指定名称的枚举常量
        System.out.println(UserRole.valueOf("ROLE_ROOT_ADMIN"));
        System.out.println(UserRole.valueOf("ROLE_ORDER_ADMIN"));
        System.out.println(UserRole.valueOf("ROLE_NORMAL"));
        System.out.println();
    }
}
/*
输出结果:
ROLE_ROOT_ADMIN
ROLE_ORDER_ADMIN
ROLE_NORMAL

0
1
2

-1
-1
-2

ROLE_ROOT_ADMIN
ROLE_ORDER_ADMIN
ROLE_NORMAL

ROLE_ROOT_ADMIN
ROLE_ORDER_ADMIN
ROLE_NORMAL
*/

1.3、枚举与switch语句

采用枚举代替多例设计模式的还有一个很重要的原因,就是枚举可以直接在switch语句中进行枚举对象类型判断,而且意义更加明确。

范例:在swtich中判断枚举类型

public enum UserRole {
        // 系统管理员
        ROLE_ROOT_ADMIN,
        // 订单管理员
        ROLE_ORDER_ADMIN,
        // 普通用户
        ROLE_NORMAL
}
public class EnumTestDemo {
    public static void main(String[] args) {
        UserRole userRole = UserRole.ROLE_ORDER_ADMIN;
        switch (userRole) {
            case ROLE_ROOT_ADMIN:
                System.out.println("这是系统管理员");
                break;
            case ROLE_ORDER_ADMIN:
                System.out.println("这是订单管理员");
                break;
            case ROLE_NORMAL:
                System.out.println("这是订单管理员");
                break;
        }
    }
}
/*
输出结果:
这是订单管理员
*/

上述程序直接在switch语句中实现枚举对象的匹配,而若使用多例设计模式,则只能通过大量的if/else语句的判断来进行内容的匹配与结果的输出。

tips:关于switch允许操作的数据类型

  1. switch语句中支持判断的数据类型,随着JDK版本的升级也越来越完善。
  • JDK 1.5之前:只支持byte、short、char、int四种数据类型
  • JDK 1.5:增加了枚举类
  • JDK 1.7:增加了String类型
  • JDK 1.8:支持10种类型
    • 基本类型:byte、char、short、int
    • 包装类:Byte、Short、Character、Integer、String、enum
  1. 但是,值得一提的是,实际上Java的switch语句只支持int类型,那么其他类型是如何支持的。
  • 基本类型:byte、char、short三种数据类型可以在不失精度的情况下向上转型为int类型,所以实际上还是int类型
  • 基本类型包装类:Java的自动拆箱机制,java编译器会在底层将Byte、Character、Short、Integer这些包装类进行拆箱,将包装器类型转换为基本数据类型
  • enum类型:枚举类有一个ordinal方法,比较的是enum的ordinal值(表示枚举值的顺序),实际上是int类型的数值
  • String类型:String类有一个hashCode算法,比较的string.hashCode值,结果也是int类型

2、Enum类

枚举并不是一个新的类型,它是提供了一种更为方便的结构。严格来说,每一个使用enum定义的类实际上都属于一个类继承了Enum父类而已。Enum类实现了枚举公共操作方法的定义,同样基于构造方法私有化的形式完成,java.lang.Enum类定义如下:

public abstract class Enum<E extends Enum<E>> extends Object implements Comparable<E>, Serializable{}

在Enum类中定义了其可以支持的泛型上限,同时Enum类提供了一些常用方法,如下表2-1所示:

表2-1 Enum类的常用方法
方法名称类型描述
protected Enum(String name, int ordinal)构造传入名字和序号
public final String name()普通获取对象名字
public final int ordina()普通获取对象序号

通过表2-1,可以发现Enum类中的构造方法使用了protected访问权限,实际上这也是属于构造方法的封装表现,同时在实例化每一个枚举类对象时都可以自动传递以一个对象名称以及序号。

范例:enum关键与Enum类之间的联系

// 枚举类
public enum Color {
    // 实例化对象
    RED, GREEN, BLUE;
}
public class EnumTestDemo {
    public static void main(String[] args) {
        for(Color color : Color.values()) {
            // 获取枚举信息
            System.out.println(color.ordinal + " - " + color.name());
        }
    }
}
/*
输出结果:
0 - RED
1 - GREEN
2 - BLUE
*/

本程序中每输出一个枚举对象时都调用了Enum类中定义的ordina()与name()方法来获取相应的信息,便可证明,enum定义的枚举类是默默继承了Enum父类。


3、定义枚举结构

Java中的枚举结构与其他语言相比得到进一步的结构提升,在枚举类中除了可以定义若干个实例化对象之外,也可以像普通类一样定义成员属性、构造方法(注意:枚举的本质上是属于多例设计模式,所以构造方法不允许使用public进行定义)、普通方法。若类中没有提供无参构造方法,则必须在定义每一个枚举对象时明确传入参数内容。

3.1、自定义扩张枚举类

扩展上述范例中的UserRole枚举,在里面加入“角色名—角色编码”的对应关系,这也是项目中常用的用法。

范例:在枚举类中定义成员属性成员方法

public enum UserRole {
    ROLE_ROOT_ADMIN("系统管理员", "1001"),
    ROLE_ORDER_ADMIN("订单管理员", "1002"),
    ROLE_NORMAL("普通用户", "1003");

    //自定义属性
    private final String roleName;
    private final String roleCode;

    //自定义构造
    UserRole(String roleName, String roleCode) {
        this.roleName = roleName;
        this.roleCode = roleCode;
    }

    //自定义方法
    public String getRoleName() {
        return this.roleName;
    }

    public String getRoleCode() {
        return this.roleCode;
    }
}
public class EnumTestDemo {
    public static void main(String[] args) {
        for (UserRole userRole : UserRole.values()) {
            System.out.println(userRole.getRoleName() + "---" + userRole.getRoleCode());
        }
    }
}

/*
输出结果:
系统管理员---1001
订单管理员---1002
普通用户---1003
*/

3.2、枚举+接口

范例:通过枚举类实现接口

//IMessage接口
public interface IMessage {
    //获取信息
    public String getMessage();
}
//枚举类实现接口
public enum Color implements IMessage {
    //枚举对象要写在首行
    RED("红色", 1),
    GREEN("绿色", 2),
    BLUE("蓝色", 3);

    //自定义成员属性
    private final String title;
    private final Integer code;

    //自定义构造方法,初始化属性
    Color(String title, Integer code) {
        this.title = title;
        this.code = code;
    }

    //方法覆盖
    @Override
    public String getMessage() {
        return this.title + "---" + this.code;
    }
}
//测试
public class EnumTestDemo {
    public static void main(String[] args) {
        //接口引用指向接口实现类对象
        //IMessage color = Color.DED;
        for (IMessage color : Color.values()) {
            System.out.println(color.getMessage());
        }
    }
}

/*
输出结果:
红色---1
绿色---2
蓝色---3
*/

此范例程序,枚举类Color实现了IMessage接口,在Color类中覆盖接口中的抽象方法,并且由于Color类是IMessage的实现子类,所以每一个枚举类对象都可以通过对象的向上转型实现IMessage接口对象实例化(接口引用指向接口实现类对象)。

枚举还有一个特别的功能就是可以直接进行抽象方法的定义,此时可以在每一个枚举类对象中分别实现此抽象方法。

范例:在枚举类中定义抽象方法

/*
什么角色干干什么事,很明显有个对应关系,所以我们先定义一个公用的接口
RoleOperation,表示不同角色所能做的操作
 */
public interface RoleOperation {
    //表示某个角色能做的哪些操作
    public String getOperation();
}
/*
不同角色的情况交由枚举类来做,定义一个枚举类RoleEnum,并让其实现RoleOperation接口
 */
public enum RoleEnum implements RoleOperation {
    // 系统管理员(有A操作权限)
    ROLE_ROOT_ADMIN("系统管理员") {
        //覆盖抽象方法
        @Override
        public String getOperation() {
            return ROLE_ROOT_ADMIN.getRoleName() + "有A操作权限";
        }
    },
    // 订单管理员(有B操作权限)
    ROLE_ORDER_ADMIN("订单管理员") {
        @Override
        public String getOperation() {
            return ROLE_ORDER_ADMIN.getRoleName() + "有B操作权限";
        }
    },
    // 普通用户(有C操作权限)
    ROLE_NORMAL("普通用户") {
        @Override
        public String getOperation() {
            return ROLE_NORMAL.getRoleName() + "有C操作权限";
        }
    };

    private String roleName;

    RoleEnum(String roleName) {
        this.roleName = roleName;
    }

    public String getRoleName() {
        return this.roleName;
    }
    /*
    
    //直接定义抽象方法(也可以不用定于接口和实现接口,直接定义抽象方法,然后重写抽象方法即可)
    @Override
    public abstract String getOperation() {}
    */
}
public class EnumTestDemo {
    public static void main(String[] args) {
        RoleEnum[] roleEnums = RoleEnum.values();
        for (RoleEnum roleEnum : roleEnums) {
            System.out.println(roleEnum.getOperation());
        }
    }
}

/*
输出结果:
系统管理员有A操作权限
订单管理员有B操作权限
普通用户有C操作权限
*/

4、枚举应用小案例

枚举作为一种提供有限实例化对象个数的类结构,主要是定义了实例化对象的使用范围,同时枚举类型也可以作为成员属性类型。例如,现在定义一个Persion类,里面需要提供有性别属性,而性别肯定不希望用户随意输入,所以使用枚举类型更加合适。

范例:枚举结构小案例

//性别
public enum Sex {
    //枚举对象
    MALE("男"),FEMALE("女");

    //成员属性
    private final String sex;

    //构造方法
    private Sex(String sex) {
        this.sex = sex;
    }

    //重写Object类中的toString()方法
    @Override
    public String toString() {
        return this.sex;
    }
}

//普通类Person
public class Person {
    //姓名
    private String name;
    //年龄
    private int age;
    //性别
    private Sex sex;

    //无参构造
    public Person() {
    }

    //有参构造
    public Person(String name, int age, Sex sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

 	public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Sex getSex() {
        return sex;
    }

    public void setSex(Sex sex) {
        this.sex = sex;
    }

    //重写Object类中的toString()方法
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                '}';
    }
}
public class EnumTestDemo {
    public static void main(String[] args) {
        Person person01 = new Person("zhangsan", 18, Sex.MALE);
        System.out.println(person01);

        Person person02 = new Person();
        person02.setName("lisi");
        person02.setAge(30);
        person02.setSex(Sex.valueOf("FEMALE"));
        System.out.println(person02);
    }
}
/*
输出结果:
Person{name='zhangsan', age=18, sex=男}
Person{name='lisi', age=30, sex=女}
*/

在定义Person类时使用了枚举类型,实例化Person类对象时就可以限定Sex对象的范围。


5、专门用于枚举的集合类

在平时学习过程中,我们一般习惯于使用诸如:**“HashMap” 和“HashSet”**等集合来盛放元素,而对于枚举,有它专门的集合类:“EnumSet”和“EnumMap”。

5.1、EnumSet集合

**“EnumSet”集合是专门为盛放枚举类型所设计的”Set“**类型集合。

/*
还是以角色枚举为例
*/
public enum UserRole {
        // 系统管理员
        ROLE_ROOT_ADMIN,
        // 订单管理员
        ROLE_ORDER_ADMIN,
        // 普通用户
        ROLE_NORMAL
}
/*
比如现在系统里来了一批人,我们需要查看他是不是某个角色中的一个
*/
//定义一个管理员角色的专属集合
EnumSet<UserRole> userRoleEnumSet = EnumSet.of(
                UserRole.ROLE_ROOT_ADMIN,
                UserRole.ROLE_ORDER_ADMIN
		);

//判断某个角色是不是管理员
Boolean isAdmin(User user) {
    if(userRoles.contains(user.getUserRole())) {
        return true;
    }
    return false;
}

5.2、EnumMap集合

**“EnumMap”集合是专门为盛放枚举类型为“key”所设计的”Map“**类型集合。

/*
系统里来了一批人,我们需要统计不同的角色到底有多少人
*/
Map<UserRole, Integer> userRoleMap = new EnumMap<>(UserRole.class);
for(User user : userList) {
    Integer num = userRoleMap.get(user.getUserRole());
    if(null != num) {
        userRoleMap.put(user.getUserRole(), num + 1);
    } else {
        userRoleMap.put(user.getUserRole(), 1);
    }
}

6、枚举与设计模式

6.1、单例模式

public class Singleton {

    // 构造函数私有化,避免外部创建实例
    private Singleton() {

    }

    //定义一个内部枚举
    public enum SingletonEnum {

        // 唯一一个枚举对象,我们称它为“种子选手”!
        SEED;  

        private Singleton singleton;

        SingletonEnum() {
            //真正的对象创建隐蔽在此!
            singleton = new Singleton(); 
        }

        public Singleton getInstnce() {
            return singleton;
        }
    }

    // 故意外露的对象获取方法,也是外面获取实例的唯一入口
    public static Singleton getInstance() {
        // 通过枚举的种子选手来完成
        return SingletonEnum.SEED.getInstnce(); 
    }
}

6.2、策略模式

范例:用枚举就可以写出一个基于策略模式的加减乘除计算器

public enum Calculator {
    ADDITION {
        public Double execute(Double x, Double y) {
            // 加法
            return x + y;
        }
    },

    SUBTRACTION {
        public Double execute(Double x, Double y) {
            // 减法
            return x - y;
        }
    },

    MULTIPLICATION {
        public Double execute(Double x, Double y) {
            // 乘法
            return x * y;
        }
    },

    DIVISION {
        public Double execute(Double x, Double y) {
            // 除法
            return x / y;
        }
    };

    public abstract Double execute(Double x, Double y);
}
public class EnumTestDemo {
    public static void main(String[] args) {
        System.out.println(Calculator.ADDITION.execute(4.0, 2.0));
        System.out.println(Calculator.SUBTRACTION.execute(4.0, 2.0));
        System.out.println(Calculator.MULTIPLICATION.execute(4.0, 2.0));
        System.out.println(Calculator.DIVISION.execute(4.0, 2.0));
    }
}

/*
输出结果:
6.0
2.0
8.0
2.0
*/

注:此文章只是学习过程中做的个人笔记,如有错误,敬请谅解。

手把手教你五种方案配置Obsidian免费同步,全平台通用(支持Alist/OpenList) Obsidian是一款优秀的Markdown笔记工具,但官方同步服务每年近700元让人望而却步💸 本文整理了5种免费同步方案,涵盖苹果生态专属方案、多网盘插件同步、版本管理同步、点对点同步、自建实时同步等不同场景📱💻 每种方案都附有详细配置步骤,助你找到最适合的同步方式✨ 阅读详情

相关推荐

H桥电路原理

一、H桥原理 图1中所示为一个典型的直流电机控制电路。电路得名于“H桥式驱动电路”是因为它的形状酷似字母H。4个三极管组成H的4条垂直腿,而电机就是H中的横杠(注意:图1及随后的两个图都只是示意图,而不是完整的电路图,其中三极管的驱动电路没有画出来)。   如图所示,H桥式电机驱动电路包括4个三极管和一个电机。要使电机运转,必须导通对角线上的一对三极管。根据不同三极管对的导通情况,电流可能会从左...

Loadingzc的专栏 7万+

windows下枚举串口的方法,超好用,跟设备管理器枚举一样

 做上位机,与设备通信,经常会用到串口。看到一些串口助手,像SSCOM,能自动扫描枚举PC的串口。所以后面的应用,我也加上自动枚举串口。  在网上找的资料,最多的是读取注册表里的内容,HKEY_LOCAL_MACHINE\ Hardware\DeviceMap\SerialComm"  这个方法很简单,能读到本机串口,虚拟串口,或外扩USB串口等的COM号。代码如下: typedef struct _SERIALNAMEBUF { int SerialNum; TCHAR ppSerialName[1

u012022315的博客 2895

告别Failed to start错误!保姆级教程:用Ubuntu20.04安装盘搞定GRUB与系统服务修复

本文提供Ubuntu20.04系统启动失败的专业修复指南,详细讲解如何利用安装盘解决GRUB与系统服务问题,避免重装系统导致的数据丢失。涵盖分区挂载、chroot环境操作、服务诊断与修复等实用技巧,帮助用户高效恢复系统正常运行。

weixin_32578161的博客 331

EnumWindows 使用

EnumWindows 用来列举屏幕上所有顶层窗口。MSDN原话:The EnumWindows function enumerates all top-level windows on the screen by passing the handle to each window。函数形式:BOOL EnumWindows( WNDENUMPROC lpEnumFunc, // call

hairi的专栏 1万+

暗黑地牢modfiles.txt文件生成工具

暗黑地牢modfiles.txt文件生成工具引言方法工具源码基本步骤 引言 玩过暗黑地牢mod,并手动修改了mod中文件的话,如果不同步修改modfiles.txt文件,就会引起各种问题,典型的比如马车刷不出mod英雄,商店和boss都不再出现mod饰品,怪物贴图丢失出现黑块等,要解决这个问题,就要修正mod文件夹下的modfiles.txt文件 方法 针对修改量大小,一般有几种方法: 如果修改较少,而且你还记得修改了哪几个文件,找到这几个文件,右键属性,查看大小,要用的是括号里面的字节数,然后打开mod

lttclaw_的专栏 5001

LabVIEW通过ActiveX控件实现与三菱FX5U PLC的高效数据交互

本文详细介绍了如何利用LabVIEW的ActiveX控件,通过三菱官方MX Component工具包实现与FX5U PLC的高效数据交互。文章从环境配置、控件插入到实战代码解析,系统讲解了连接建立、数据读写及资源释放的全流程,并提供了关键的避坑指南,帮助工程师快速构建稳定可靠的上位机通讯系统。

weixin_29197051的博客 373

Android中少用枚举类(enum)而多用@IntDef @StringDef

1. 概述 Enum 是 java 中一种包含固定常数的类型 当我们需要预先定义一些值,并限定范围时,使用 Enum,来做到编写和编译都查错 Java 的 Enum 的实质是特殊单例的静态成员变量 Enum 可以在编写器,编译器做到各种静态检查防呆 Enum 在运行期,所有枚举类作为单例,全部加载到内存中 因为上述原因,Enum 增加了APK 的内存占用,比常量多5到10倍的内存占用 所以放弃枚举,就是关于安卓应用性能的内存占用部分的最佳实践方法之一 2. Android 单例类占用内存原理 单例增加了

RikkaTheWorld 939

FPGA控制DDR读写(AXI4总线接口)

FPGA控制DDR读写

qq_42712308的博客 1万+

Java枚举 —— 很少被使用,或许是因为真正了解它的人太少了

你代码中的flag和status,都应该用枚举Enum来替代

SexyCode 1万+

Jetson Nano官方镜像下载&烧录

在NVIDIA Jetson Nano开发者套件上安装NVIDIA官方Ubuntu镜像

weixin_44222088的博客 8843

解密DS90UB983-Q1的汽车电子魔法:如何通过FPD-Link IV实现4K视频的无缝传输

本文深入解析了德州仪器DS90UB983-Q1串行器芯片如何通过FPD-Link IV技术在汽车电子中实现4K视频无缝传输。文章详细介绍了该技术的核心功能,包括多流传输(MST)模式、热插拔检测(Hot Plug Detect)机制以及电磁兼容性设计,为车载信息娱乐系统提供了高带宽、低延迟的可靠解决方案。

i3j4k5的博客 239

从什么时候开始,我们不再使用枚举

学习过任何一种高级语言的人,肯定都知道一种数据类型,枚举那是一个很强大,也很实用的数据类型,但是,似乎从很早之前,就很少用了,或许说,是尽量避免去用了为什么?似乎是因为,MYSQL的枚举用法,存在一些坑(几年前的事了,似乎从我开始入程序猿这条路就开始了),然后我们就很少用了。那我们现在思考下,我们为什么需要使用枚举枚举是存在了一些固定选择的范围时,即一个有限的集合时,才会使用的,将集合中的所有元素...

lengmohui668的博客 2407

【数据集】GPM IMERG Daily Precipitation Dataset

GPM IMERG Daily Precipitation Dataset

WW、forever的博客 1218

java枚举很少被使用_java中枚举原来还可以这么用

前言相信不少java开发者写过状态变更的业务,比如订单流程、请假流程等等。一般会搞一个状态标识来标识生命周期的某个阶段。很多人会写这种逻辑:如果流程几十个岂不是要if到爆炸。还有这“0”、“1”是几个意思?优化的办法当然可以使用设计模式中的状态模式来搞,允许一个具有状态的对象根据其状态封装同一对象的不同行为。我们可以编程状态之间的转换,然后定义单独的状态:但是这种操作会增加过多的状态对象依赖。那么...

weixin_30139729的博客 368

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Java枚举 — 很少被使用,或许是因为真正了解它的人太少了

前言  你代码中的flag和status,都应该用枚举来替代 看了很多篇文章,还是这篇更容易理解,记录一下 很多人都说,枚举在实际开发中很少用到,甚至就没用到。因为,他们的代码往往是这样子的: public class Constant { /* * 以下几个变量表示英雄的状态 */ public final static int STATUS_WALKING = 0;//走 ...

徐冉的博客 4691

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java枚举很少被使用,java 枚举使用中注意的问题

通常在需要使用数据集合的时候,枚举便派上了用场。大多数情况下使用枚举的时候无意识的不会去修改里面的值。那么枚举中的值到底能不能修改呢? 答案是:一旦定义了枚举,最好不要妄图修改里面的值,除非修改是必要的。今天遇到的问题就是和枚举相关的,因为之前并不知道枚的对象实际上是单例,导致了非常严重的问题先看下代码(1)定义的枚举:public enum SquareAreaEnum {CAROUSEL(n...

weixin_39810196的博客 367

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【javaSE】 枚举与枚举的使用

优点:将常量组织起来统一进行管理场景:错误状态码,消息类型,颜色的划分,状态机等等…本质:是 java.lang.Enum 的子类,也就是说,自己写的枚举类,就算没有显示的继承 Enum ,但是其默认继承了这个类枚举本身就是一个类,其构造方法默认为私有的,且都是默认继承与 java.lang.Enum枚举可以避免反射和序列化问题。

m0_71731682的博客 1677

枚举类型的使用方法

1. 枚举的定义枚举类型定义的一般形式为: enum 枚举名{ 枚举值表 }; 在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。 例如: 该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取值只能是七天中的某一天。 2. 枚举变量的说明 如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。 设有变量a,b,c被说明为上述的weekday,可采用下述任一种方式: enum weekday

learnerz的专栏 14万+

2017蓝桥杯模拟题 猜算式(暴力枚举)

猜算式ps:暴力枚举即可代码:#include<stdio.h> #include<string.h> int num[15];int judge(int x) { while(x) { num[x%10]++; if(num[x%10]>2) return 0; x/=10; } return

Darkarts 1473

Windows网络用户登录密码的猜解

Windows 网络用户密码猜解算法的主要思想是:利用Windows提供的窗口枚举函数EnumWindows ()找到网络登录窗口。利用子窗口枚举函数EnumChildWindows ()或GetNext-DlgTabItem()和GetWindowLong()定位网络登录窗口上的各个控件。利用 SendDlgItemMessage()或SetDlgItemText()来输入用户名及密码。利用Se

燕青专栏 1542

Java 枚举类简单使用

1 简单的枚举类 // 创建一个枚举类 package com.lihaogn.test; public enum SeasonEnum { // 定义四个枚举实例 SPRING,SUMMER,AUTUMN,WINTER; } // 测试类 package com.lihaogn.test; public class Test { public static void main(St...

lihaogn的博客 9894

枚举中使用枚举_快速使用枚举的三种方法

枚举中使用枚举In Swift, there are a lot of data structures, and they all have their own context when it’s needed to use exactly them. For instance, we use structures for describing an independent object, or ...

weixin_26711867的博客 1599

linux 很少枚举类型,Android之使用枚举利弊及替代方案

Android上不应该使用枚举,占内存,应该使用@XXXDef注解来替代。使用 Enum 的缺点每一个枚举值都是一个对象,在使用它时会增加额外的内存消耗,所以枚举相比与 Integer 和 String 会占用更多的内存。较多的使用 Enum 会增加 DEX 文件的大小,会造成运行时更多的开销,使我们的应用需要更多的空间。如果你的应用使用很多的 Enum ,最好使用Integer 或 String...

weixin_42318030的博客 201

枚举的使用

自定义类实现枚举1.不需要提供setXxx方法,因为枚举对象值通常为只读.2.对枚举对象/属性使用final+static共同修饰,实现底层优化.3.枚举对象名通常使用全部大写,常量的命名规范.4.枚举对象根据需要,也可以有多个属性/*** 演示自定义枚举的基本使用*///演示字定义枚举实现class Season {//类//描述//定义了四个对象, 固定.public static final Season SPRING = new Season("春天", "温暖")

weixin_53616401的博客 1260

c# 枚举的使用

  c#创建枚举类型使用enum关键字,限制其值只能是一组符号名称。 一、声明枚举   定义枚举要先写一个enum关键字,后面跟上{},然后再{}内添加一组符号,这些符号标识了该枚举类型可以拥有的合法值。例如: enum week { Monday, Tuesday, Wednesday, Thrusday, Friday, Saturday, Sunday }//声明一个星期的枚举 ...

weixin_30540691的博客 1356

java中枚举的使用

枚举的使用

weixin_74200123的博客 1026
上一篇: 大数类
下一篇: Java虚拟机加载Java类的过程
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

窝在角落里学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值