# Java 枚举和注解 # 先看一个需求 package com.study.study13enum_; public class Enumeration01 { public static...public void setDesc(String desc) { this.desc = desc; } } # 分析问题 # 创建 Season 对象有如下特点 季节的值是有限的几个值...# 枚举的二种实现方式 自定义类实现枚举 使用 enum 关键字实现枚举 # 自定义类实现枚举-应用案例 不需要提供setXxx方法,因为枚举对象值通常为只读....在 JavaEE 中注解占据了更重要的角 色,例如用来配置应用程序的任何切面,代替 java EE 旧版中所遗留的繁冗代码和 XML 配置等。...代码演示: package com.study.study14annotation_; import java.util.ArrayList; import java.util.List; @SuppressWarnings
采用枚举类。 季节的值是有限的几个值(spring, summer, autumn, winter) 只读,不需要修改。...枚举的二种实现方式 自定义类实现枚举 使用enum 关键字实现枚举 自定义类实现枚举-应用案例 1.不需要提供setXxx方法,因为枚举对象值通常为只读. 2.对枚举对象/属性使用 final + static...在JavaEE 中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替java EE 旧版中所遗留的繁冗代码和XML 配置等。...incomplete-switch,抑制与switch陈述式(enum case)中遗漏项目相关的警告 javadoc,抑制与javadoc相关的警告 nls,抑制与非nls字串文字相关的警告 null,抑制与空值分析相关的警告...当运行Java 程序时, JVM 不会保留注解。这是默认值 RetentionPolicy.RUNTIME:编译器将把注解记录在class 文件中. 当运行Java 程序时, JVM 会保留注解.
JDK1.5新增的enum关键字用于定义枚举类。...枚举类和普通类的区别: 使用enum定义的枚举类默认继承了java.lang.Enum类; 枚举类的构造器只能使用private修饰符; 枚举类的所有实例必须在枚举类中显示列出(分隔;结尾)。...列出的实例系统会自动添加public static final修饰; 所有的枚举类都提供了一个values方法,该方法可以很方便地遍历所有的枚举值; JDK1.5中可以在switch表达式中使用枚举类的对象作为表达式...,case子句可以直接使用枚举值的名字,无需添加枚举类作为限定。...若枚举只有一个成员,则可以作为一种单例模式的实现方式。
Swift 枚举可以用来存储任意类型的关联值 声明存储不同类型关联值的枚举成员(这个定义不提供任何Int或String类型的关联值) 一个成员值是(Int,Int,Int)类型关联值的num 一个成员值是...原始值是在定义枚举时被预先填充的值。对于一个特定的枚举成员,它的原始值始终不变。关联值是创建一个基于枚举成员的常量或变量时才设置的值,枚举成员的关联值可以变化。...原始值的隐式赋值 当使用整数作为枚举成员的原始值时,隐式赋值的值依次递增1 enum Season:Int { case spring = 1 case summer case...autumn case winter } 当使用字符串作为枚举类型的原始值时,每个枚举成员的隐式原始值为该枚举成员的名称 enum Season:String { case spring...) 使用原始值初始化枚举实例 可以通过rawValue初始化一个枚举成员,返回值则是枚举成员或nil 可以通过这个来判断这个新枚举成员是否在枚举值中 enum Season:Int { case
枚举类是一种特殊的类,用于定义一组常量(final variables)。通过使用enum关键字定义枚举类,每个枚举常量都是枚举类的一个实例,并且具有名称和值。...要自定义注解,需要创建一个接口或抽象类,并使用@Target和@Retention注解来指定该注解可以用于哪些元素,并指定该注解在运行时是否可用 一、Java枚举类Enum 1.自定义枚举类...枚举类是通过关键字enum来定义的,每个枚举常量都是枚举类的一个实例,并且具有名称和值。...可以使用Java的基本类型、枚举类型、Class类型、字符串、集合等类型作为注解的属性。可以使用default来设置属性的默认值。 创建一个实现了该接口的类,并重写其方法。...总结 Java枚举类(Enum)和注解(Annotation)都是Java语言中重要的特性,它们提供了一种方便的方式来定义常量、提供元数据信息和实现各种功能。
注解是一种可以被添加到java代码中的元数据,属于java的一种数据类型,和类、接口、数组、枚举类似 类、方法、变量、参数、包都可以使用注解来修饰 注解对于它所修饰的代码并没有直接影响 1.2 用途 Annotations...它使用一个枚举类型定义如下: 1 public enumElementType {2 /**类,接口(包括注解类型)或枚举的声明*/ 3 TYPE,4 5 /**属性的声明*/ 6 FIELD,7 8...;6 }7 }8 } 在定义的注解中,有些注解类型元素没有默认值,使用的时候需要在标记名后面加上(),并以“元素名1=元素值1,元素名2=元素值=2”的形式为元素赋值。...,而且命名为value,在使用注解的时候可以直接使用:@注解名(注解值),其等效于:@注解名(value = 注解值) @Retention(RetentionPolicy.RUNTIME) @Target...,在使用时又只需要填入一个值的情况,在使用注解时可以直接写为:@注解名(类型名 = 类型值),它和标准写法:@注解名(类型名 = {类型值})等效 @Retention(RetentionPolicy.RUNTIME
什么是枚举类? 枚举类是优化定义固定对象的一种特殊的类。 换句话说,在需要类的实例为一个或者多个并且相对固定的时候,使用枚举类。...在枚举类模板的扩展上也更加容易 */ } } 注解 Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加 载, 运行时被读取, 并执行相应的处理。...注解本质是一个接口和一组键值对,通过反射和代理实现某种行为。 【框架 = 注解 + 反射 + 设计模式。】...Class类里有一个forName的方法,返回值也为Class: ?...获取类的信息,调用类的属性及方法 package test; import java.lang.reflect.Field; import java.lang.reflect.Method; class
//定义注解 import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target...\_TYPE; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD...; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER...EnumValueValidator.class}) public @interface EnumValueValidate { // 默认错误消息 String message() default "必须为指定值"...boolean isValid(Object value, ConstraintValidatorContext context) { if (value == null) { //空的时候不校验
有时候,更可怕的是系统因为这些空值的情况,会抛出空指针异常,导致业务系统发生问题。 此篇文章,我总结了几种关于空值的处理手法,希望对读者有帮助。...除了以上这种”弱提示”的方式,还有一种方式是,返回值是有可能为空的。那要怎么办呢? 我认为我们需要增加一个接口,用来描述这种场景....即便 我java bean中的getter是符合Optional的,但是因为java bean 太多了,这样会导致你的代码有50%以上进行Optinal的判断,这样便污染了代码。...小结 可以这样总结Optional的使用: 当使用值为空的情况,并非源于错误时,可以使用Optional! Optional不要用于集合操作!...不要滥用Optional,比如在java bean的getter中! (end)
最近在做一个学校的系统,其中用到一些枚举,可是在显示下拉列表时要绑定枚举的描述及其枚举值时就只一个一个的默认设死,这样不灵活。有没有其快捷方法?...搜了下百度很多相关资料有了些许眉目,代码如下 1.首先定义枚举,这里要做显示学生状态的列表,如下所示 1 /// 2 /// 学生状态 3 /// 4...2, 23 24 /// 25 /// 休学 26 /// 27 [Description("休学")] 28 Suspend = 3 29 } 2.循环取枚举属性...,Enum.GetNames这个方法是获取枚举定义的属性(如Study),Enum.GetValues这个方法是获取枚举定义的属性值(如0) 1 foreach (var em in Enum.GetNames
import java.util.LinkedHashMap; /** * 是否 * 1-是 0-否 * 表.字段 * table.column */ public enum
大家好,又见面了,我是全栈君 Java1.5提供了关键字enum,能够通过该关键字方便得定义自己须要的枚举类型,比方 enum Season { SPRING, SUMMER, AUTUMN,...WINTER } 就定义了一个季节枚举类型。...也就是说,使用name()方法和valueOf(String)方法能够在枚举类型对象和字符串之间方便得转换。...对于枚举类型,Java内部实际上还是转换为java.lang.Enum的子类,能够通过“javap -c Season”命令反编译来观察这一点。...对于这个问题,实际上能够利用枚举类型的values()方法间接的做到。values()方法返回一个枚举对象数组,比方本例就是Season[],数组元素依照序数排列。
如果我们可以通过调用value()得到相同的值的话,就应该使用valueOf()。这样会传递会一个空值。...4)用返回空的collection或者空的array来代替从方法中返回Null 这个java技巧也是在Joshua Bloch的《Effective Java》所提及的。...顺便说下,对于JAVA程序猿来说,这是新的最好的实践,尽管需要一点时间去适应。 6)遵循约定和定义合理的默认值 在java领域,一个最佳的避免空指针的方法之一就是和定下约定和遵守约定。...同样要注意,定义可以使空值的或者不可以空值的时候,提醒调用者作出被告知的决定。失败之后的选择或者接受空值也是一个你需要重视的重要设计。...因为数据库可以要求获得从多个来源来的数据,在数据库中拥有对空值的检查将会确保数据的完整性。在数据库中保留对空值约束的约束也是会让你减少在JAVA中减少空检查的代码。
返回每个枚举常量在类型中的数字位置.永远不要根据枚举的序数导出与它关联的值, 而是要将它保存在一个实例域中.第36条 用EnumSet代替位域如果一个枚举类型的元素主要用在集合中, 一般就用int枚举模式...(无法打印, 无法遍历.)java.util提供了EnumSet类来有效地表示从单个枚举类型中提取的多个值的多个集合.第37条 用EnumMap代替序数索引有时候, 你可能会见到用ordinal方法来索引数组的代码...(一维和多维的例子.)第38条 用接口模拟可扩展的枚举Java语言上是不支持枚举继承的, 这并不意外, 因为枚举的扩展最后证明都不是什么好点子....如果API是根据接口编写的, 那么在可以使用基础枚举类型的任何地方, 也都可以使用这些枚举.第39条 注解优先于命名模式Java 1.5之前, 一般使用命名模式(naming pattern)表明有些程序元素需要通过某种工具或者框架进行特殊处理...这样做有很多缺点, 注解很好地解决了这些问题.代码例子:@Test注解.有参数的@ExceptionTest注解.Java 8的@Repeatable注解.第40条 坚持使用Override注解举例:
很多开发规范都是不建议在Android中使用枚举的,在Android系统中使用枚举的开销是使用常量的2倍。...,简单地讲就是系统提供的,用于定义注解的“注解” @Retention(RetentionPolicy.SOURCE) //这里指定int的取值只能是以下范围 @IntDef({TYPE_MUSIC...,简单地讲就是系统提供的,用于定义注解的“注解”。...使用这个标识了注解的生命周期,这里指定值为 RetentionPolicy.SOURCE 说明这个注解保留在源码阶段。...如果在传参时没有按照指定的值那么编辑器就会发出警告,这样就可以在编码的时候进行提示。 ? @StringDef 同样地,还可以对字符串常量定义注解。
无数开发人员饱受NullReferenceException(.NET)、NullPointerException(Java)等的折磨。...既然可空特性如此声名狼藉,为何C# 2以及.NET 2.0要引入可空值类型呢? 在深入可空值类型的实现细节之前,首先看看它可以解决哪些问题,以前又是如何解决这些问题的。...枚举、系统内置结构体和用户自定义结构体等都满足该约束,因此以下写法均合法:NullableNullableNullable Nullable<LocalDate...CLR针对可空值类型还提供了一项帮助:装箱(boxing)。装箱行为 当涉及装箱行为时,可空值类型和非可空值类型的行为有所不同。...有一点需要强调:当null用于可空值类型时,它表示HasValue为false的可空类型的值,而不是null引用。null引用和可空值类型不容易辨明,例如以下两行代码是等价的: int?
有时候,更可怕的是系统因为这些空值的情况,会抛出空指针异常,导致业务系统发生问题。 此篇文章,我总结了几种关于空值的处理手法,希望对读者有帮助。...除了以上这种” 弱提示” 的方式,还有一种方式是,返回值是有可能为空的。那要怎么办呢? 我认为我们需要增加一个接口,用来描述这种场景....即便 我 java bean 中的 getter 是符合 Optional 的,但是因为 java bean 太多了,这样会导致你的代码有 50% 以上进行 Optinal 的判断,这样便污染了代码。...小结 可以这样总结 Optional 的使用: 当使用值为空的情况,并非源于错误时,可以使用 Optional! Optional 不要用于集合操作!...不要滥用 Optional, 比如在 java bean 的 getter 中! 代码之外,亦是人生,从事区块链、java、大数据开发工程师的后花园笔记。记录学习python的每一步!
在fastjson中,缺省是不输出空值的。无论Map中的null和对象属性中的null,序列化的时候都会被忽略不输出,这样会减少产生文本的大小。但如果需要输出空值怎么做呢?....; JSON.toJSONString(obj, SerializerFeature.WriteMapNullValue); 空值特别处理 SerializerFeature 描述 WriteNullListAsEmpty...将Collection类型字段的字段空值输出为[] WriteNullStringAsEmpty 将字符串类型字段的空值输出为空字符串 "" WriteNullNumberAsZero 将数值类型字段的空值输出为...0 WriteNullBooleanAsFalse 将Boolean类型字段的空值输出为false class Model { public List items; } Model
在Python中,None、空列表[]、空字典{}、空元组()、0等一系列代表空和无的对象会被转换成False。除此之外的其它对象都会被转化成True。...python变量初始化为空值分别是: 数值 digital_value = 0 字符串 str_value = "" 列表 list_value = [] 字典 ditc_value =...{} 元组 tuple_value = () Python中关于空类型的判断使用的内建函数any(), any(iterable) Return True if any element of
第 1 条:用enum代替int常量 枚举类型是指由一组固定的常量组成合法值的类型,例如人的性别、中国的省份名称等。...因为int枚举是编译时常量,被编译到使用它们的客户端中,如果与枚举常量关联的int值发生了变化,客户端就必须重新编译。否则的话,程序可以运行,但运行的行为就是不确定的。...幸运的是,从 Java 1.5 发行版本开始,提供了专门用于表示枚举的enum类型: public enum Orange { NAVEL, TEMOLE, BLOOD } Java...枚举类型的本质上是int值,其背后的基本思想非常简单:它们就是通过公有的静态final域为每个枚举常量导出实例的类。...valueOf(String)方法,它将常量的名字转成常量本身;还有一个values()方法,可以返回枚举类型中定义的所有枚举值。
领取专属 10元无门槛券
手把手带您无忧上云