news 2026/6/13 10:45:32

Android学Dart学习笔记第二十节 类-枚举

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Android学Dart学习笔记第二十节 类-枚举

枚举类型,通常称为枚举或枚举,是一种特殊的类,用于表示固定数量的常量值。

定义一个简单的枚举

关键字都是一样的

enumColor{red,green,blue}

可以以,结尾以便利于复制,而不会产生问题

enumColor{red,green,blue,}voidmain(){print(Color.values.length);//3}

定义一个增强枚举

Dart还允许enum声明使用字段、方法和const构造函数来声明类,这些构造函数限制为固定数量的已知常量实例。

声明增强型枚举时,遵循与普通类类似的语法,但有一些额外要求:
实例变量必须是 final,包括由 mixin 添加的变量
所有生成式构造函数必须是 const
工厂构造函数只能返回固定的、已知的枚举实例之一
不能继承其他类,因为 Enum 会自动被继承
不能重写 index、hashCode 或相等运算符 ==
不能在枚举中声明名为 values 的成员,因为它会与自动生成的静态 values getter 冲突
枚举的所有实例必须在声明开头声明,并且必须至少声明一个实例

增强枚举中的实例方法可以使用this来引用当前枚举值。

enumVehicleimplementsComparable<Vehicle>{car(tires:4,passengers:5,carbonPerKilometer:400),bus(tires:6,passengers:50,carbonPerKilometer:800),bicycle(tires:2,passengers:1,carbonPerKilometer:0);constVehicle({requiredthis.tires,requiredthis.passengers,requiredthis.carbonPerKilometer,});finalint tires;finalint passengers;finalint carbonPerKilometer;intgetcarbonFootprint=>(carbonPerKilometer/passengers).round();boolgetisTwoWheeled=>this==Vehicle.bicycle;@overrideintcompareTo(Vehicle other)=>carbonFootprint-other.carbonFootprint;}

增强枚举最低要求2.17的语言版本

如何使用枚举

枚举的访问也和java一样

finalfavoriteColor=Color.blue;if(favoriteColor==Color.blue){print('Your favorite color is blue!');}

每个枚举都有下标值,也是从0开始

assert(Color.red.index==0);assert(Color.green.index==1);assert(Color.blue.index==2);

要获取所有枚举值的列表,请使用.value

List<Color>colors=Color.values;assert(colors[2]==Color.blue);

你可以在switch中使用枚举,如果你没有考虑到所有的分支
,将会报错,你也可以使用default或者case _,
如果你对switch还不了解,可以看看之前的文章 dart 分支

varaColor=Color.blue;switch(aColor){caseColor.red:print('Red as roses!');caseColor.green:print('Green as grass!');default:// Without this, you see a WARNING.print(aColor);// 'Color.blue'}

如果您需要访问枚举值的名称,可以使用.name

print(Color.blue.name);// 'blue'

你同样可以访问枚举对象的成员,和访问对象一样

print(Vehicle.car.carbonFootprint);
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 23:47:22

5个OpenWrt界面主题深度评测:从入门到精通的完整选择指南

5个OpenWrt界面主题深度评测&#xff1a;从入门到精通的完整选择指南 【免费下载链接】luci LuCI - OpenWrt Configuration Interface 项目地址: https://gitcode.com/gh_mirrors/lu/luci 你是否曾经被OpenWrt单调的管理界面困扰&#xff1f;是否想要一个既美观又实用的…

作者头像 李华
网站建设 2026/6/13 19:45:55

AI 智能体 RAG 入门教程

正在寻找⼀种可靠的⽅法来构建智能知识客服或强⼤的知识库&#xff1f;检索增强生成 (RAG) 技术正是您实现这些⽬标的理想选择。 RAG&#xff0c;全称为 Retrieval-Augmented Generation&#xff0c;中⽂译为检索增强⽣成。这项技术的核⼼在于整合两⼤关键功能&#xff1a; 检索…

作者头像 李华
网站建设 2026/6/13 21:17:28

源代码加密软件怎么选?应该考虑哪些关键技术要点

在源代码开发场景中&#xff0c;加密软件的选型需同时兼顾安全防护与开发效率&#xff0c;传统文件透明加密易被绕过、存在文件损坏风险&#xff0c;云桌面则成本高、依赖网络。深信达SDC 沙箱以全磁盘加密、代码级安全防护为核心&#xff0c;适配本机原生开发模式&#xff0c;…

作者头像 李华
网站建设 2026/6/11 11:29:42

LeetCode 3573.买卖股票的最佳时机 V:深度优先搜索

【LetMeFly】3573.买卖股票的最佳时机 V&#xff1a;深度优先搜索 / 动态规划&#xff1a;通俗讲解 力扣题目链接&#xff1a;https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-v/ 给你一个整数数组 prices&#xff0c;其中 prices[i] 是第 i 天股票的价格&…

作者头像 李华
网站建设 2026/6/11 5:18:38

从零构建智能四足机器人:Mini Pupper开发全流程解析

在机器人技术快速发展的今天&#xff0c;拥有一款能够自主导航、执行复杂动作的四足机器人不再是遥不可及的梦想。Mini Pupper作为一款开源ROS机器人狗套件&#xff0c;为机器人爱好者提供了从硬件组装到软件编程的完整解决方案&#xff0c;让每个人都能亲手打造属于自己的智能…

作者头像 李华