Java枚举学习之定义和基本特性详解
作者:小虚竹and掘金 发布时间:2022-07-23 20:29:44
枚举的定义
1.题目
枚举是JAVA 5.0后增加的一个重要类型。可以用来表示一组取值范围固定的变量。使用enum关键字,可以定义枚举类型。
实现:使用反射查看枚举的修饰符,父类和自定义方法。
2.解题思路
创建一个枚举:Position
定义两个元素,来表示方位。
对于枚举的元素命名方式:全部为大写字母。
创建一个类:Reflection
使用JAVA的反射机制输出Position枚举的修饰符,父类和自定义方法
getModifiers():获取修饰符
getSuperclass():获取父类
getDeclaredMethods():获取声明的方法
3.代码详解
Position
public enum Position {
HERE, THERE
}
Reflection
package com.xiaoxuzhu;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
/**
* Description:
*
* @author xiaoxuzhu
* @version 1.0
*
* <pre>
* 修改记录:
* 修改后版本 修改人修改日期修改内容
* 2022/5/4.1 xiaoxuzhu2022/5/4 Create
* </pre>
* @date 2022/5/4
*/
public class Reflection {
public static void main(String[] args) {
Class<Position> enumClass = Position.class;
String modifiers = Modifier.toString(enumClass.getModifiers());
System.out.println("enum类型的修饰符:" + modifiers);
System.out.println("enum类型的父类:" + enumClass.getSuperclass());
System.out.println("enum类型的自定义方法:");
Method[] methods = enumClass.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method);
}
}
}
反射结果:
枚举的基本特性
1.题目
题目:使用枚举解决不同的变量,使用不同的数字赋值。可以根据数字知道它的含义。
2.解题思路
创建一个枚举:Size
定义三个枚举变量:SMALL, MEDIUM, LARGE
对于枚举的元素命名方式:全部为大写字母。
创建一个类:EnumClass
输出枚举元素的序数,与SMALL元素比较的3种方式结果,枚举元素的名称
Enum类是所有枚举类型的父类,它是一个没有抽象方法的抽象类。
Enum类定义了枚举类常用的方法:
compareTo() :比较枚举元素的顺序
equals() :判断枚举元素是否相同
name() : 获取枚举元素在定义时的名称
ordinal():获得枚举元素在定义时的顺序,从0开始计数。
3.代码详解
Size枚举
public enum Size {
SMALL, MEDIUM, LARGE
}
EnumClass类:
public class EnumClass {
public static void main(String[] args) {
for (Size size : Size.values()) {
System.out.println(size + "的序数是:" + size.ordinal());
System.out.print(size.compareTo(Size.SMALL) + " ");
System.out.print(size.equals(Size.SMALL) + " ");
System.out.println(size == Size.SMALL);
System.out.println(size.name());
System.out.println("********************");
}
}
}
4.多写一个知识点
可以使用“==”来比较两个枚举元素,不需要重写equals()和hashCode()方法,它们已经自动生成了。
增加枚举元素信息
1.题目
题目:枚举类除了不能继承外,可以看作是普通类,可以在类中增加方法和构造函数。
2.解题思路
定义一个新的枚举:Size
定义3个元素:SMALL("我是小号"), MEDIUM("我是中号"), LARGE("我是大号")
对于枚举的元素命名方式:全部为大写字母。
枚举类一定要先定义枚举类型,才能定义类的属性和方法。要使用分号分隔,如果没有定义枚举类型,编译都过不了
3.代码详解
public enum Size2 {
SMALL("我是小号"), MEDIUM("我是中号"), LARGE("我是大号");
private String description;
private Size2(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
public static void main(String[] args) {
for (Size2 size : Size2.values()) {
System.out.println(size + ":" + size.getDescription());
}
}
}
来源:https://juejin.cn/post/7131321703702986765


猜你喜欢
- 本文实例为大家分享了Android实现界面跳转的具体代码,供大家参考,具体内容如下布局<?xml version="1.0&
- 介绍Objects Comparer是用于对象比较的工具,c#常见的数据结构都是可以用这个三方库进行对比,比较复杂的对象也是可以比较的。简而
- 首先描述一下问题,spring boot 使用的是内嵌的tomcat, 所以不清楚文件上传到哪里去了, 而且spring boot 把静态的
- 经常有同学问到,使用Android能不能开发游戏呢?能开发那些游戏呢?由于操作系统和开发语言局限,一般开发安卓手机游戏,我们很少使用其自带语
- 需求当游戏显示3d场景及其UI的时候。玩家左右晃动手机的时候,UI界面会随之左右偏移。上下晃动的时候,3D场景会随之上下偏移。手机停止晃动的
- 快速排序过程没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”!光听这个名字是不是就觉得很高端呢。假设我们现在对“52 39 67
- 目录一、基本使用二、常用的 APIImageLoaderImageRequestDisposable图片变换三、功能拓展Intercepto
- Lambda是第十一个希腊字母,大写Λ,小写λ,额,跑题了…Lambda表达式 是Java8的新特性之一:Lambda表达式函数式接口流AP
- 1.例题题目描述迷宫由 n 行 m 列的单元格组成,每个单元格要么是空地,要么是障碍物。其中1表示空地,可以走通,2表示障碍物。给定起点坐标
- 在android开发中,我们时常会遇到对字符串中某些固定的字段实现可点击和颜色的设置,现粘贴处我在开发中如何设置这些属性的。代码如下:pri
- 一键格式化代碼: Ctrl+Alt+L注意:如果按Ctrl+Shift+F在win10上会出现字体的简繁转换,再重复按键一次就可以转换回来a
- 1.Mybatis概述 MyBatis 是一款
- 本文实例为大家分享了Android实现弹幕效果的具体代码,供大家参考,具体内容如下首先分析一下,他是由三层布局来共同完成的,第一层视频布局,
- 去年就已经学了这个技术了,一直没去写,现在抽个时间写了个俄罗斯方块游戏。只有简单的新游戏,暂停,继续,积分功能。简单的实现了俄罗斯的经典功能
- 开发过程中,我们往往需要大量与文件交互,读文件,写文件已成家常便饭,本地运行完美,但一上到投产环境,往往会出现很多令人措手不及的意外,或开发
- 本文实例讲述了java实现图片裁切的工具类。分享给大家供大家参考,具体如下:package com.yanek.util;import ja
- 本文实例讲述了Java基于socket实现的客户端和服务端通信功能。分享给大家供大家参考,具体如下:以下代码参考马士兵的聊天项目,先运行Ch
- 一.理论准备KMP算法为什么比传统的字符串匹配算法快?KMP算法是通过分析模式串,预先计算每个位置发生不匹配的时候,可以省去重新匹配的的字符
- 1,刚刚在别人开源的项目中看到了一个挺不错的用户体验,效果图如下:2,那下面我们就来实现一下,首先看一下布局,由于一般只是我们包含头像的那部
- 一、实现流程1.注册2.登录3.登录保持【状态续签】二、实现方法项目结构1.引入依赖<!-- spring-web --><