枚举类型

JAVA-Enum 枚举

别来无恙 提交于 2019-12-21 13:38:53
【参考】枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。 说明:枚举其实就是特殊的类,域成员均为常量,且构造方法被默认强制是私有。 正例:枚举名字为 ProcessStatusEnum 的成员名称:SUCCESS / UNKNOWN_REASON。 创建一个枚举类 public enum DayEnum { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY } 使用 public class EnumTest { DayEnum day; public EnumTest(DayEnum day) { this.day = day; } public void tellItLikeItIs() { switch (day) { case MONDAY: System.out.println("Mondays are bad."); break; case FRIDAY: System.out.println("Fridays are better."); break; case SATURDAY: case SUNDAY: System.out.println("Weekends are best."); break; default: System.out.println(

Java 枚举详解

别来无恙 提交于 2019-12-21 13:35:40
为什么要用枚举 在博客系统中,一篇文章有且可能有这几种状态, 数据库中 article 文章表中 state 字段存储数值,表示其状态: 0(已发表Published) 1(草稿Draft) 2(撤回撤回(Delete) 文章实体类中用整数类型的state实例变量标识状态: public class Article { /* 文章状态可能值:0,1,2 */ private int state; ... } Service 层调用 DAO 层修改文章状态为‘已发表’: /** * dao接口修改文章状态方法 * @param articleId 文章ID * @param state 状态 */ int updateState(int articleId, int state); // `Service`层修改文章状态的调用Dao代码: articleDao.updateState(id, 0); 以上代码有两个问题: state 参数传递并没有限定范围(0,1,2); 传递数据参数的代码,缺少语义,不看文档或注释不知道0是什么含义; 先来解决第二个问题, 在JDK1.5前常用的解决方式: /** * 定义了文章的状态 */ public interface ArticleState{ // 发布状态 int PUBLISHED = 0; // 草稿状态 int DRAFT = 1

单例模式有几种写法?

六眼飞鱼酱① 提交于 2019-12-21 05:06:12
单例模式有几种写法? 前言 纠结单例模式有几种写法有用吗?有点用,面试中经常选择其中一种或几种写法作为话头,考查设计模式和coding style的同时,还很容易扩展到其他问题。 这里讲解几种笔者常用的写法,但切忌生搬硬套,去记“茴香豆的写法”。编程最大的乐趣在于“know everything, control everything”。 JDK版本:oracle java 1.8 大体可分为4类,下面分别介绍他们的基本形式、变种及特点。 饱汉模式 饱汉是变种最多的单例模式。 基础的饱汉 饱汉,即已经吃饱,不着急再吃,饿的时候再吃。所以他就先不初始化单例,等第一次使用的时候再初始化,即“懒加载”。 // 饱汉 // UnThreadSafe public class Singleton1 { private static Singleton1 singleton = null; private Singleton1() { } public static Singleton1 getInstance() { if (singleton == null) { singleton = new Singleton1(); } return singleton; } } 饱汉模式的核心就是懒加载。好处是更启动速度快、节省资源,一直到实例被第一次访问,才需要初始化单例;小坏处是写起来麻烦

开源安全工具分享

三世轮回 提交于 2019-12-21 02:00:16
子域名枚举扫描器或爆破工具 https://github.com/lijiejie/subDomainsBrute(lijiejie开发的一款使用广泛的子域名爆破枚举工具) https://github.com/ring04h/wydomain (猪猪侠开发的一款域名收集全面,精准的子域名枚举工具) https://github.com/le4f/dnsmaper (子域名枚举爆破工具以及地图位置标记) https://github.com/0xbug/orangescan(提供web界面的在线子域名信息收集工具) https://github.com/TheRook/subbrute(高效精准的子域名爆破工具,同时也是扫描器中最常用的子域名API库) https://github.com/We5ter/GSDF (基于谷歌SSL透明证书的子域名查询 脚本 ) https://github.com/mandatoryprogrammer/cloudflare_enum (使用CloudFlare进行子域名枚举的 脚本 ) https://github.com/guelfoweb/knock(Knock子域名获取,可用于查找子域名接管漏洞) https://github.com/exp-db/PythonPool/tree/master/Tools/DomainSeeker

Effective.Java第34-44条(枚举)

依然范特西╮ 提交于 2019-12-20 07:05:20
34. 使用枚举类型替代整型常量   常量的语义表达不清晰,只能靠前面的名称来区分。枚举具有可读性、更安全、更强大等优势。而且 枚举类型对象之间的值比较可以使用==来比较值是否相等的,不是必须使用equals方法。   要将数据与枚举常量相关联,首先需要声明实例属性并编写一个构造方法,构造方法带有数据并将数据保存在属性中。枚举本质上是不变的,所有的属性都应设为final。 如下: 一个原始的常量类保存int值: public class Constants { public static final int APPLE_FUJT = 1; public static final int APPLE_PIPPIN = 2; public static final int APPLE_other = 3; } 改装为枚举类型后的类如下: public enum Apples { APPLE_FUJT(1), APPLE_PIPPIN(2), APPLE_other(3); final int number; private Apples(int number) { this.number = number; } } 测试代码: public class Client { public static void main(String[] args) { System.out

<JAVA>枚举类型(enum)

半腔热情 提交于 2019-12-20 02:54:11
枚举理解: 枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是 这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性。 关键字:enum。 public enum Color { RED, GREEN, BLANK, YELLOW } 向枚举中添加新方法 public enum Color { RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); // 成员变量 private String name; private int index; // 构造方法 private Color(String name, int index) { this.name = name; this.index = index; } // 普通方法 public static String getName(int index) { for (Color c : Color.values()) { if (c.getIndex() == index) { return c.name; } } return null; } // get set 方法 public String getName() { return name; }

Java enum(枚举)使用详解之三

狂风中的少年 提交于 2019-12-19 09:37:23
DK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。 用法一:常量 在 JDK1.5 之前,我们定义常量都是: publicstaticfianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。 Java代码 public enum Color { RED, GREEN, BLANK, YELLOW } 用法二:switch JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。 Java代码 enum Signal { GREEN, YELLOW, RED } public class TrafficLight { Signal color = Signal.RED; public void change() { switch (color) { case RED: color = Signal.GREEN; break; case YELLOW: color = Signal.RED; break; case GREEN: color = Signal.YELLOW; break; } } } 用法三:向枚举中添加新方法 如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义

Java基础-枚举

孤人 提交于 2019-12-18 22:09:09
多例设计模式: 特点: 构造方法私有化,类内部提供多个实例化对象,后面通过static方法返回 class Color { private static final Color RED = new Color("RED"); private static final Color GREEN = new Color("GREEN"); private static final Color BLUE = new Color("BLUE"); private String title; private Color(String title) { this.title = title; } private static Color getInstance(int ch) { switch (ch) { case 0 : return RED; case 1 : return GREEN; case 2 : return BLUE; default: return null; } } public String toString() { return this.title; } public class TestDemo { public static void main(String[] args) { System.out.println(Color.getInstance(0)); }

apple Swift语言新手教程

旧巷老猫 提交于 2019-12-18 00:39:56
Apple Swift编程语言新手教程 文件夹 1 简单介绍 2 Swift入门 3 简单值 4 控制流 5 函数与闭包 6 对象与类 7 枚举与结构 1 简单介绍 今天凌晨Apple刚刚公布了Swift编程语言,本文从其公布的书籍《The Swift ProgrammingLanguage》中摘录和提取而成。希望对各位的iOS&OSX开发有所帮助。 Swift是供iOS和OS X应用编程的新编程语言。基于C和Objective-C。而却没有C的一些兼容约束。Swift採用了安全的编程模式和加入现代的功能来是的编程更加简单、灵活和有趣。界面则基于广受人民群众爱戴的Cocoa和Cocoa Touch框架。展示了软件开发的新方向。 Swift已经存在了多年。Apple基于已有的编译器、调试器、框架作为其基础架构。通过ARC(Automatic Reference Counting。自己主动引用计数)来简化内存管理。 我们的框架栈则一直基于Cocoa。Objective-C进化支持了块、collection literal和模块。同意现代语言的框架无需深入就可以使用。(by gashero)感谢这些基础工作,才使得能够在Apple软件开发中引入新的编程语言。 Objective-C开发人员会感到Swift的似曾相识。Swift採用了Objective

枚举型变量

喜夏-厌秋 提交于 2019-12-17 12:15:49
enum:    enum关键字,类型名,枚举常量表。    enum Day{mon,tue,wend,thur,fri,satur,sun}; 使用方法:   enum Day day=mon;   枚举常量表当中的第一个元素的默认值为0,如果当前的元素没有被赋值,则其值为前面一个 常量的值加1。并且枚举常量只能够以标识符的方式表示出来,不能表示为字符串类型或者是整型 的类型。 来源: https://www.cnblogs.com/wangkaia/p/12004959.html