`
typot
  • 浏览: 42234 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java 安全枚举类

    博客分类:
  • JAVA
阅读更多

枚举

enum可以采用int等方式来实现枚举,但是在某些情况下,只要他人提供一个同该枚举一样的值的话会造成程序错误的以为是符合条件的enum变量,缺乏安全行;

 

java安全枚举类

 

public class Suit{

 

     private String name;

     private Suit(String name){

      

         this.name = name;

 

    }

 

    public static final Suit ENUM1 = new Suit("enum1");

    public static final Suit ENUM2 = new Suit("enum2");

}

 

因为在该类中,并未提供可以访问的构造函数(构造函数是private),所以可以避免2个Suit的值相同的情况。

 

另外一种是扩展的问题,比如要对该类增加新的类型。

则可以把构造函数弄成protected的方法让子类扩展,并将equals和hashcode方法设置成final,不让子类改写了。

 

安全枚举类有个缺陷:很难对所有的枚举值进行罗列,即使采用collections来存储也是比较没有效率的,还有就是不能用在switch   case中

分享到:
评论

相关推荐

    Java5 枚举类详解及实例代码

    主要介绍了Java5 枚举类详解及实例代码的相关资料,枚举类是java5 新类型,全部都是类型安全的形式表示,需要的朋友可以参考下

    java枚举是如何保证线程安全的

    主要介绍了java枚举是如何保证线程安全的。Java SE5提供了一种新的类型-Java的枚举类型,关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用,这是一种非常有用...

    java手册中英文java8,java9手册

    在Java SE 1.5版本中引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱特性。太阳微系统对Java语言的解释是:“Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多...

    javaenum源码-BaRMIe:JavaRMI枚举和攻击工具

    java枚举源码巴马 BaRMIe 是一个用于枚举和攻击 Java RMI(远程方法调用)服务的工具。 RMI 服务经常在没有足够安全控制的情况下暴露危险的功能,但是由于缺乏有效的测试工具,RMI 服务在安全评估期间往往会被忽视。...

    enumjs:JavaScript中的类型安全枚举

    这是在JavaScript中实现类型安全枚举的尝试。 我最熟悉Java中枚举的工作方式,因此我在此之后对该库进行了建模。 JavaScript没有真正的枚举。 此问题的大多数解决方法都涉及使用映射,其中键表示枚举常量,并且值是...

    单例模式,属于创建类型的一种常用的软件设计模式 通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中

    通常单例模式在Java语言中,有两种构建方式: 懒汉式—线程不安全:最基础的实现方式,线程上下文单例,不需要共享给所有线程,也不需要加synchronize之类的锁,以提高性能。...java中枚举类本身也是一种单例模式

    4、枚举类的使用 相当于数据字典的用法1

    2、枚举在Java家族中只占了很小的一块比重,所以我在项目中用枚举的地方不是很多,毕竟,一个项目是很多人开发维护的,用一个陌生的东西,会给其他的同事造成阅读困难

    JAVA 7 程序设计.part1.rar

    然后深入解析了接口和抽象类、枚举、集合框架、泛型、输入输出、嵌套类和内部类等内容,掌握这部分内容有助于深入理解Java的底层原理;接着阐述Swing的基础和高级知识、多态、注解、国际化、Java网络、JDBC、Java...

    疯狂JAVA讲义

    6.8.3 枚举类的属性、方法和构造器 220 6.8.4 实现接口的枚举类 223 6.8.5 包含抽象方法的枚举类 224 6.9 对象与垃圾回收 225 6.9.1 对象在内存中的状态 226 6.9.2 强制垃圾回收 227 6.9.3 finalize方法 228 ...

    Java语言程序设计:JAVA_2-基本数据类型、枚举类型和数组.ppt

    Java语言程序设计:JAVA_2-基本数据类型、枚举类型和数组.ppt

    java编程常见问题

    当验证器检测到某个类文件中存在内部不兼容或者安全问题时抛出该错误。 40.java.lang.VirtualMachineError 虚拟机错误。用于指示虚拟机被破坏或者继续执行操作所需的资源不足的情况。 41.java.lang.Arithmetic...

    超级有影响力霸气的Java面试题大全文档

     java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int 和 Integer 有什么区别  Java 提供两种不同的类型:引用类型和原始类型(或...

    java进阶13天资料.zip

    day02-抽象类、接口、代码块,final、单例、枚举 day03-多态、包、权限修饰符、内部类,Object类,Date类 day04-常用API、正则表达式,泛型、Collection集合API day05-迭代器,数据结构,List,Set ,TreeSet集合,...

    JAVA 7 程序设计.part2.rar

    然后深入解析了接口和抽象类、枚举、集合框架、泛型、输入输出、嵌套类和内部类等内容,掌握这部分内容有助于深入理解Java的底层原理;接着阐述Swing的基础和高级知识、多态、注解、国际化、Java网络、JDBC、Java...

    Java2核心技术.part5

    12.5.6单元素与类型安全枚举的序列化 12.5.7版本 12.5.8使用序列化进行克隆 12.6文件管理 12.7新的I/O 12.7.1内存映射文件 12.7.2缓冲区数据结构 12.7.3文件锁定 12.8正则表达式 13章泛型...

    Java面试套路,Java进阶学习,打破内卷拿大厂Offer,升职加薪!.zip

    面向对象通过类去实现功能模块,代码安全性高,容易扩展和复用,比较灵活且便于维护 3、JDK/JRE/JVM三者的关系 JVM指的是Java的虚拟机,Java程序运行需要在JVM虚拟机上,不同平台都有自己的JVM虚拟机,所以说java...

    java 面试题 总结

    java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置...

    阿里java开发手册(黄山版)

    最新的阿里java开发手册 内容概要: 1. 编程规约 2. 异常日志 3. 单元测试 4. 安全规约 5. MySQL数据库 6. 工程结构 7. 设计规约 附1: 版本历史 附2: 专有名词解释 附3: 错误码列表 能学到什么: 提出的规约...

Global site tag (gtag.js) - Google Analytics