枚举类(掌握)

枚举的诞生历史(了解)

在服装行业,衣服的分类根据性别可以表示为三种情况:男装、女装、中性服装。

private ? type;

public void setType(? type){

this.type = type

}

需求:定义一个变量来表示服装的分类?请问该变量的类型使用什么?

使用int和String类型,且先假设使用int类型,因为分类情况是固定的,为了防止调用者乱创建类型,可以把三种情况使用常量来表示。

public class ClothType {

public static final int MEN = 0;

public static final int WOMEN = 1;

public static final int NEUTRAL = 2;

}

注意:常量使用final修饰,并且使用大小字面组成,如果是多个单词组成,使用下划线分割。

此时调用setType方法传递的值应该是ClothType类中三个常量之一。但是此时依然存在一个问题——依然可以乱传入参数比如100,此时就不合理了。

同理如果使用String类型,还是可以乱设置数据。那么说明使用int或String是类型不安全的。那么如果使用对象来表示三种情况呢?

public class ClothType {

public static final ClothType MEN = new ClothType();

public static final ClothType WOMEN = new ClothType();

public static final ClothType NEUTRAL = new ClothType();

}

此时调用setType确实只能传入ClothType类型的对象,但是依然不安全,为什么?因为调用者可以自行创建一个ClothType对象,如:setType(new ClothType)。

此时为了防止调用者私自创建出新的对象,我们把CLothType的构造器私有化起来,外界就访问不了了,此时调用setType方法只能传入ClothType类中的三个常量。此时代码变成:

public class ClothType {

public static final ClothType MEN = new ClothType();

public static final ClothType WOMEN = new ClothType();

public static final ClothType NEUTRAL = new ClothType();

private ClothType() {}

}

高,实在是高!就是代码复杂了点,如果存在定义这种类型安全的且对象数量固定的类的语法,再简单点就更好了——有枚举类。

13.7.2.枚举类的定义和使用(掌握)

枚举是一种特殊的类,固定的一个类只能有哪些对象,定义格式:

public enum 枚举类名{

常量对象A, 常量对象B, 常量对象C ;

}

我们自定义的枚举类在底层都是直接继承了java.lang.Enum类的。

public enum ClothType {

MEN, WOMEN, NEUTRAL;

}

枚举中都是全局公共的静态常量,可以直接使用枚举类名调用。

ClothType type = ClothType.MEN;

因为java.lang.Enum类是所有枚举类的父类,所以所有的枚举对象可以调用Enum类中的方法.

String name = 枚举对象.name(); // 返回枚举对象的常量名称

int ordinal = 枚举对象.ordinal(); // 返回枚举对象的序号,从0开始

注意:枚举类不能使用创建对象

public class EnumDemo {

public static void main(String[] args) {

int ordinal = ClothType.MEN.ordinal();

String name = ClothType.MEN.name();

System.out.println(ordinal);

System.out.println(name);

new ClothType(); //语法报错

}

}

目前,会定义枚举类和基本使用就可以了,后面还会讲更高级的使用方式。

若要获得最好的学习效果,需要配合对应教学视频一起学习。需要完整教学视频,请参看https://ke.qq.com/course/272077。

java 枚举 大小_Java枚举入门相关推荐

  1. java枚举数字_Java枚举类型的使用,数值的二进制表示

    一.Java枚举类型的使用 首先请看这段代码: packagejava上课;public classEnumTest {public static voidmain(String[] args) { ...

  2. java 枚举 接口_java枚举接口

    java中的枚举类 枚举类(enum),与class和interface关键字地位相同. 枚举类是一个特殊的类,可以有自己的成员变量.方法.构造器,可以实现一个或多个接口.一个java源文件中只能有一 ...

  3. java 枚举 注解_Java枚举类和注解梳理

    1. 枚举类 1. 枚举类的使用 枚举类的理解:类的对象只有有限个,确定的.我们称此类为枚举类. 当需要定义一组常量时,强烈建议使用枚举类. 如果枚举类中只有一个对象,则可以作为单例模式的实现方式. ...

  4. java枚举类型转换_java枚举类型enum值与整数的转换

    java编程中偶尔会用到枚举,为了直观,我们通常将枚举值设置为形象的单词,方便理解和使用.枚举类型相当于数据库 中字典表,但是枚举只有字典表的值,缺少其他用来表示和值一一对应的字段,当我们在数据库中保 ...

  5. java枚举数字_Java 枚举 通过数字实例化枚举类型

    package com.zjl.domain.enumtype; /** * 枚举类 * * @Author zjl * @Date 2018/06/27 */ public enum EnumTyp ...

  6. java枚举 数字_java 枚举

    Java中枚举的线程安全性及序列化问题 --枚举是如何保证线程安全的 要想看源码,首先得有一个类吧,那么枚举类型到底是什么类呢?是enum吗?答案很明显不是,enum就和class一样,只是一个关键字 ...

  7. java枚举 赋值_java 枚举 - java 枚举构造函数赋值-java 枚举 set 赋值-嗨客网

    Java枚举教程 我们已经了解了 Java枚举详解 语法 [public] enum 枚举类型名称{ 枚举对象1,枚举对象2,枚举对象3...枚举对象n; } 参数 参数 描述 [public] 可选 ...

  8. java输入枚举型_Java 枚举型为什么是静态的,以及是怎么实现的?

    确实,枚举类型总让我们觉着怪怪的,无论是语法还是静态非静态,还是操作方法,总让人觉着它和数组.列表等格格不入.那到底是为什么呢? 我们从本质分析下java的枚举类型. 1 枚举类型初探 枚举类型,其语 ...

  9. ef 在此上下文中只支持基本类型或枚举类型_Java枚举不应该成为你成功路上得绊脚石,源码给你讲解清楚

    现在在面试的过程中,基础得东西占的比重越来越高,尤其是对于Java底层得一些东西,比方说今天得内容---枚举,单纯说这些知识点其实并不难,甚至在日常得工作中用到的都不算多,但是,在面试的过程中会问到你 ...

最新文章

  1. php5.5 php5.6,php 5.5 5.6的区别有哪些
  2. 浅说国际根域名服务器与中国电信的镜像服务器
  3. python培训比较好的机构-学Python哪个机构好?老男孩Python培训班
  4. java16下载_java lombok下载
  5. SQL Server安全(8/11):数据加密(Data Encryption)
  6. 浮点数比较大小的时候不能直接用等号
  7. 阿里云张献涛:2021 弹性计算发生了哪些变化
  8. 【技术】jquery暂无图片替换
  9. 计算机子网掩码在线,IP地址计算器
  10. 云服务器维护包含哪些,云服务器维护内容
  11. 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)java
  12. 【活动】VUCA时代下的项目管理:京东技术+系列论坛
  13. Pixel2Mesh-Tensorflow2
  14. ActivityManagerService解读之Activity启动初探
  15. error link1158 无法运行rc.exe
  16. token的使用方法
  17. Spark SQL: Error in query: undefined function错误的解决方法
  18. VELO3D宣布推出大幅面3D金属打印机Sapphire(R) XC,将生产率提高5倍,同时将成本降低75%
  19. 在创业的路上,关于预设的期待,一般人经常会犯什么错误?
  20. 点击button的样式改变

热门文章

  1. Tokyo Tyrant基本规范(1)--介绍和安装
  2. 关于JVM的几道面试题
  3. jQuery1.4.2新特性
  4. 恢复网卡禁用灰色的按钮
  5. JVM虚拟机-Class文件之类索引、父类索引和接口索引集合
  6. 算法高级(6)-共识(Raft)算法
  7. A Survey on Knowledge Graph-Based Recommender Systems 知识图谱提升推荐系统准确性与可解释性ArXiv 2020
  8. 云服务器安装其他版本系统,云服务器安装自己的系统版本
  9. 复联4里用到的方法论
  10. Go range实现原理及性能优化剖析