首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Android中使用枚举注解不是枚举

很多开发规范都是不建议在Android中使用枚举,在Android系统中使用枚举开销是使用常量2倍。...所以他可以传递我们定义好3种类型中其它任意 int 数值,这就有可能会产生某种错误。我们希望 当用户输入了我们定义之外数值,编辑器可以给我们提示。...使用这个标识了注解生命周期,这里指定为 RetentionPolicy.SOURCE 说明这个注解保留在源码阶段。...我们这里使用 RetentionPolicy.SOURCE 用意就是在编码时能够识别出错误 FileType,至于 RUNTIME和 CLASS 阶段状态,我们是不关心。...如果在传参时没有按照指定那么编辑器就会发出警告,这样就可以在编码时候进行提示。 ? @StringDef 同样地,还可以对字符串常量定义注解。

1.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

Java——枚举:优雅干净enum

《Java编程思想》中有这么一句话:“有时恰恰因为它,你才能够‘优雅干净’地解决问题”——这句话说是谁呢?就是本篇主角——枚举(Enum)——大家鼓掌了。...在之前很长时间一段时间里,我都不怎么用枚举,因为总感觉它没什么用处——这其实就是“自我认知”短见。当一个人一直蹲在自己深井里不敢跳出来的话,那他真的只能看到井口那么大点天空。...public enum Chenmo { WANGER, WANGSAN, WANGSI } 我们为沉默枚举创建了三个,分别是王二、王三、王四。...,可以直接使用枚举,非常简洁。...另外,在编译期间限定类型,可以有效避免越界情况——字符串常量类型在作为switch判断条件时候很容易因为误写发生越界问题。

2.8K00

EasyC++14,枚举使用

这是EasyC++系列第14篇,咱们来聊聊C++当中枚举枚举 简介 C++当中提供了枚举操作,我们可以使用enum关键字创建枚举类型。...这种方式创建为符号常量,可以代替const关键字,并且还可以自定义名字,让代码可读性更强。...,之后orange开始,依次赋值成2,3,4....枚举取值范围 前文说了,只有声明中枚举是有效,然而由于C++允许使用强制转换转换成枚举,所以理论上枚举取值范围内都可以被转换成枚举,虽然这些在逻辑上不一定有意义。...对于枚举变量来说,它范围并不是固定,而是根据定义情况波动。C++会根据枚举声明情况计算上限和下限,只能允许在范围内整型强制转化为枚举

55410

Java中怎样由枚举常量ordinal获得枚举常量对象

当然,假设valueOf(String)方法參数不是枚举类型合法字符串,则会抛出IllegalArgumentException异常。...Enum类提供了一个ordinal()方法,用来返回枚举对象序数,比方本例中SPRING, SUMMER, AUTUMN, WINTER序数就分别为0, 1, 2, 3。...在有些情况下,我们须要使用这个序数,并且还有可能再依据这个序数生成所须要枚举对象,但是Enum并没有提供valueOf(int)这个方案,那是不是就做不到呢?...对于这个问题,实际上能够利用枚举类型values()方法间接做到。values()方法返回一个枚举对象数组,比方本例就是Season[],数组元素依照序数排列。...在自己定义枚举类型中,我们仅仅要定义自己valueOf(int)方法,并返回该数组下标对象对象就能够了。

1.7K10

CA1714:Flags 枚举应采用复数形式名称

规则 ID CA1714 类别 命名 修复是中断修复还是非中断修复 重大 原因 枚举具有 System.FlagsAttribute,并且其名称不是以“s”结尾。...默认情况下,此规则仅查看外部可见枚举,但这是可配置。 规则说明 用 FlagsAttribute 标记类型具有复数形式名称,因为该特性指明可以指定多个。...例如,定义一周中各天枚举可能适用于指定多天应用程序。 此枚举应该具有 FlagsAttribute,并且可称为“Days”。 类似的枚举如果只允许指定一天,则不具有该属性,可以称为“Day”。...如何解决冲突 将枚举名称设为复数,如果不应同时指定多个枚举,请删除 FlagsAttribute 属性。 何时禁止显示警告 如果名称是复数形式,但不以“s”结尾,则可以安全地禁止显示冲突。...例如,如果前面描述多天枚举名为“DaysOfTheWeek”,虽然这不是本意,但也违反了规则逻辑。 应该禁止显示此类冲突。

38200

Go 100 mistakes之如何正确设置枚举

我们知道,在Go中会给定义变量一个默认,比如int类型变量默认是0。我们在定义枚举时,往往也会0开始定义。本文就解释如何区分是显示指定了变量0还是因为确实字段得到默认。...我们创建Weekday类型枚举方法是比较合适。...Friday Saturday Sunday ) ① 使用 iota 定义枚举 itoa0开始并每行增加1。...下面是Effective Go中出现一个关于处理ByteSize枚举例子: type ByteSize float64 const ( _ = iota ① KB ByteSize =...枚举 ② 定义Unknown常量 ③ 定义一个包含Weekday字段Request结构体 ④ 实现一个HTTP处理器 ⑤ 读取请求体并返回一个[]byte ⑥ 解码JSON请求体 在这个例子中,我们创建了一个

3.7K10

CA1717:只有 FlagsAttribute 枚举应采用复数形式名称

规则 ID CA1717 类别 命名 修复是中断修复还是非中断修复 重大 原因 枚举名称以复数形式结尾,并且枚举未标记 System.FlagsAttribute 特性。...默认情况下,此规则仅查看外部可见枚举,但这是可配置。 规则说明 命名约定规定,复数形式枚举名称表示可以同时指定多个枚举。...FlagsAttribute 告诉编译器,应将枚举视为对枚举启用位运算位字段。 如果一次只能指定一个枚举,则枚举名称应为单数形式。 例如,定义星期枚举可能适用于可指定多天应用程序。...这缩短了学习新软件库所需时间,让客户更加相信该库是由拥有开发托管代码专业知识的人员所开发。 如何解决冲突 将枚举名称设置为单数形式或添加 FlagsAttribute。..., internal 相关规则 CA1714:Flags 枚举应采用复数形式名称 CA1027:用 FlagsAttribute 标记枚举 CA2217:不要使用 FlagsAttribute 标记枚举

34700

CA1712:不要将类型名用作枚举前缀

规则 ID CA1712 类别 命名 修复是中断修复还是非中断修复 重大 原因 枚举包含名称枚举类型名称开头成员。...规则说明 枚举成员名称不使用类型名称作为前缀,因为类型信息将由开发工具提供。 命名约定为面向公共语言运行时库提供通用外观。...这缩短了学习新软件库所需时间,让客户更加相信该库是由拥有开发托管代码专业知识的人员所开发。 如何解决冲突 若要解决此规则冲突,请枚举成员中删除类型名称前缀。...枚举前缀触发器 你可以仅为此规则、为所有规则或为此类别(命名)中所有规则配置此选项。 有关详细信息,请参阅代码质量规则配置选项。 枚举前缀触发器 你可以配置触发规则所需枚举数量。...dotnet_code_quality.CA1712.enum_values_prefix_trigger = Heuristic 使用默认启发式(即至少 75% 枚举枚举类型名称开头)触发规则。

36300

数据字典标准与统一重要性(码表&枚举

在日常软件开发当中,开发者经常会听到“公共代码、编码、码表、枚举”这样名词,对这些概念可能会有些混淆和认知不透彻,那么这篇文章会详细论述一下关于数据字典相关概念、应用、标准与统一重要性及其数据来源...关于“公共代码、编码、码表、枚举含义,其本质都可以统一为码表,是对某一领域事务或概念一定范围划分,有相对固定取值边界。...其最基本结构就是键值对,一般由中英文名称编码组成,由可枚举数据构成,存储枚举数据名称与编码映射关系,由key和value组成。 码表可用于标准属性取值范围约束。...在软件前台页面用地方就比较常见了,数据字典数据主要用“下拉框”这种控件来体现,主要用来展示码表选项; 图片 在数据统计方面,数据字典一般不是用来展示,而是用于SQL中select查询group...如下图枚举“性别sex”: 图片 在实际应用中,数据字典标准化与统一化尤为重要,其重要性重要体现在两个方面: u 本系统内标准化:数据字典标准化在系统内部是非常重要,数据字典标准化为后续软件开发和数据统计提供了数据基础

1.5K20

2018-06-13 如何优雅高效创建单例——枚举Enum

如果你对单例不是很了解,或者对于单例线程安全问题以及序列化会破坏单例等问题不是很清楚,可以先阅读以上文章。上面六篇文章看完之后,相信你一定会对单例模式有更多,更深入理解。...所以,创建一个enum类型是线程安全。 也就是说,我们定义一个枚举,在第一次被真正用到时候,会被虚拟机加载并初始化,而这个初始化过程是线程安全。...由于反序列化后对象是重新new出来,所以这就破坏了单例。 但是,枚举反序列化并不是通过反射实现。所以,也就不会发生由于反序列化导致单例破坏问题。...,不需要关心其初始化过程中线程安全问题,因为枚举类在被虚拟机加载时候会保证线程安全被初始化。...除此之外,在序列化方面,Java中有明确规定,枚举序列化和反序列化是有特殊定制。这就可以避免反序列化过程中由于反射导致单例被破坏问题。

98650

iOS·枚举变量在 未赋值赋值为空 情况下,默认为0(即第一个枚举类型)

枚举类型变量赋值特性: 一个枚举类型如果没有赋初值,则默认为0。 一个枚举类型如果赋值为nil,同样为0。...= 1 }; 在调用时候,代码欲VC字典数组 self.resource 中获取某字典 self.resource[indexPath.row] 并取出 type 键值对,但实际使用时,该字典并不存在键值对...,即 [self.resource[indexPath.row] objectForKey:@"type"] 为空,这时候如果把它传递给枚举类型,所获得到枚举类型仍为0。...打个断点,可以发现type1和type2均为PopupTypeNormal,即第一个枚举类型。...结论 可见,某些博客讲,上述这些对字典判空方法,是无效

7.6K10

【地铁上设计模式】--创建型模式:单例模式(五)--枚举单例

枚举类型中定义枚举只会被实例化一次,即保证了全局唯一实例,而且实现简单、线程安全、防止反射攻击、支持序列化等。...如何实现枚举单例 实现枚举单例步骤如下: 定义一个枚举类型,枚举就是单例实例; 在枚举类型中定义单例实例属性和方法。 在程序中使用单例实例时,直接引用枚举类型中枚举即可。实现代码如下。...INSTANCE枚举来获取单例实例,例如: Singleton.INSTANCE.doSomething(); 这种实现方式非常简单,且保证在任何情况下都只会实例化一次,因此是一种非常优秀单例实现方式...{ public void DoSomething() { // ... } } // 在程序中使用时,可以直接引用枚举类型中INSTANCE枚举来获取单例实例,例如...在枚举类型中定义一个INSTANCE枚举,在程序中直接使用该枚举即可获取单例实例。

34120
领券