- 浏览: 267389 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
1260533105:
uncaught invalidstateerror:Fail ...
WebSocket -
sh747665463:
压力好大啊
【转】如果你不知道接下去学什么,就看这个
java的Enum枚举类型终于在j2se1.5出现了。之前觉得它只不过是鸡肋而已,可有可无。毕竟这么多年来,没有它,大家不都过得很好吗?今日看《Thinking in Java》4th edition,里面有一句话“有时恰恰因为它,你才能够"优雅而干净"地解决问题。优雅与清晰很重要,正式它们区别了成功的解决方案与失败的解决方案。而失败的解决方案就是因为其他人无法理他。"使用Enum枚举类型,可以将以前笨拙的代码变得优雅简单?但是,我同时也在思考另外一个问题,使用新的技术,会不会给技术人员带来更多的负担呢? "学习新版语言的一个危险就是疯狂使用新的语法结构" 先学习一下enum的简单应用,以下简洁的代码已经包括enum所提供的绝大部分功能。 1.enum的应用,包括定义,遍历,switch,enumset,enummap等 Java代码 /** //定义一个enum枚举类型,包括两个实例ON,OFF //测试函数 //switch与enum的结合使用 //EnumSet的使用 //EnumMap的使用 } Java代码 public enum TestEnumMathod { 有什么不好了,大家都这样用了很长时间了,没什么问题啊。 但其没有看到代码的人并不知道你的企图 2.可以创建一个enum类,把它看做一个普通的类。除了它不能继承其他类了。(java是单继承,它已经继承了Enum), 3.switch()参数可以使用enum了 4.values()方法是编译器插入到enum定义中的static方法,所以,当你将enum实例向上转型为父类Enum是,values()就不可访问了。解决办法:在Class中有一个getEnumConstants()方法,所以即便Enum接口中没有values()方法,我们仍然可以通过Class对象取得所有的enum实例 5.无法从enum继承子类,如果需要扩展enum中的元素,在一个接口的内部,创建实现该接口的枚举,以此将元素进行分组。达到将枚举元素进行分组。 6.使用EnumSet代替标志。enum要求其成员都是唯一的,但是enum中不能删除添加元素。 7.EnumMap的key是enum,value是任何其他Object对象。 8.enum允许程序员为eunm实例编写方法。所以可以为每个enum实例赋予各自不同的行为。 9.使用enum的职责链(Chain of Responsibility) .这个关系到设计模式的职责链模式。以多种不同的方法来解决一个问题。然后将他们链接在一起。当一个请求到来时,遍历这个链,直到链中的某个解决方案能够处理该请求。 10.使用enum的状态机 11.使用enum多路分发 -------------------------
package com.janeky.enumtest;
import java.util.EnumMap;
import java.util.EnumSet;
/**
* Java枚举类型enum使用详解
* @version 2009/9/5
* @author janeky
* @mail rojaneky@gmail.com
*
*/
public class EnumTest {
//定义一个enum枚举类型,包括两个实例ON,OFF
public enum State {
ON, OFF
};
//测试函数
public static void main(String[] args) {
//直接变量enum
for (State s : State.values())
System.out.println(s.name());
//switch与enum的结合使用
State switchState = State.OFF;
switch (switchState) {
case OFF:
System.out.println("OFF");
break;
case ON:
System.out.println("ON");
break;
}
//EnumSet的使用
EnumSet stateSet = EnumSet.allOf(State.class);
for (State s : stateSet) {
System.out.println(s);
}
//EnumMap的使用
EnumMap stateMap = new EnumMap(
State.class);
stateMap.put(State.ON, "is On");
stateMap.put(State.OFF, "is off");
for (State s : State.values()) {
System.out.println(s.name() + ":" + stateMap.get(s));
}
}
}
package com.janeky.enumtest;
import java.util.EnumMap;
import java.util.EnumSet;
* Java枚举类型enum使用详解
* @version 2009/9/5
* @author janeky
* @mail rojaneky@gmail.com
*
*/
public class EnumTest {
public enum State {
ON, OFF
};
public static void main(String[] args) {
//直接变量enum
for (State s : State.values())
System.out.println(s.name());
State switchState = State.OFF;
switch (switchState) {
case OFF:
System.out.println("OFF");
break;
case ON:
System.out.println("ON");
break;
}
EnumSet stateSet = EnumSet.allOf(State.class);
for (State s : stateSet) {
System.out.println(s);
}
EnumMap stateMap = new EnumMap(
State.class);
stateMap.put(State.ON, "is On");
stateMap.put(State.OFF, "is off");
for (State s : State.values()) {
System.out.println(s.name() + ":" + stateMap.get(s));
}
}
为每个enum实例定义不同的方法
package com.janeky.enumtest;
public enum TestEnumMathod {
//为每个enum实例添加不同的实现方法
SAMPLE1 {
String getInfo() {
return "SAMPLE1";
}
},
SAMPLE2{
String getInfo()
{
return "SAMPLE2";
}
};
abstract String getInfo();
//测试
public static void main(String args[])
{
for(TestEnumMathod method:values())
{
System.out.println(method.getInfo());
}
}
}
package com.janeky.enumtest;
//为每个enum实例添加不同的实现方法
SAMPLE1 {
String getInfo() {
return "SAMPLE1";
}
},
SAMPLE2{
String getInfo()
{
return "SAMPLE2";
}
};
abstract String getInfo();
//测试
public static void main(String args[])
{
for(TestEnumMathod method:values())
{
System.out.println(method.getInfo());
}
}
}
以下内容可能有些无聊,但绝对值得一窥
1.
public class State {
public static final int ON = 1;
public static final Int OFF= 0;
}
首先,它不是类型安全的。你必须确保是int
其次,你还要确保它的范围是0和1
最后,很多时候你打印出来的时候,你只看到 1 和0 ,
so,抛弃你所有旧的public static final常量吧
可以添加其他方法,覆盖它本身的方法
发表评论
-
jvm回顾
2018-11-29 09:10 0一、运行时数据区域 1、程序计数器(program co ... -
转一篇泛型介绍不错的文章
2018-08-02 19:10 644泛型,一个孤独的守门者。 大家可能会有疑问,我为什么叫做泛 ... -
jstat
2018-02-04 11:36 435jps(Java Virtual Machine Proce ... -
转:ant 入门
2017-12-09 17:58 6881)什么是Ant ant是构建工具 2)什么是构 ... -
廉颇老矣?n年没写ant,发现生疏了,这不是我想要的
2017-12-09 11:37 623毕业10年,差不多6年没有碰ant了,昨天解决一个siga ... -
jdk 9 hellomodules
2017-10-03 20:45 4751、准备 lib mods src/cn.gbase ... -
转:Java 9,OSGi以及模块化的未来
2017-10-03 19:19 0ava 9,OSGi以及模块化的 ... -
转:Java 9,OSGi以及模块化的未来
2017-10-03 19:12 0<div class="iteye-blog- ... -
转:Java 8 中的 Streams API 详解
2017-10-02 21:39 435Java 8 中的 Streams API 详 ... -
转:装饰模式
2017-01-01 10:46 501一个有意思的装饰模式样例。 Java与模式:装饰(D ... -
转:Java中多态性的实现
2016-08-25 11:10 536Java中多态性的实现 什么是多态 面向对象的三大 ... -
深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
2016-01-22 14:35 2662作者:Lucida 微博:@peng_gong 豆瓣 ... -
转:permGen space out of memory
2013-11-21 12:53 1020PermGen space的全称是Permanent Gen ... -
trove high performance collections for java
2013-06-02 10:31 721trove high performance collec ... -
kettle Could not find the main class. Program will exit err
2013-06-01 15:44 0I am new in KETTLE. I am tryi ... -
jvm参数集合
2013-05-26 15:42 689一、内存分配 -xms java heap初始化时的大小 ... -
jvm优化配置
2013-05-26 15:16 923server 和 client两种模 ... -
http 错误代码
2013-04-25 09:00 678HTTP 400 – 请求无效HTTP 401.1 – 未授 ... -
JDBC 规范4.1 翻译 (一)
2012-12-28 14:41 23从今天开始希望每天抽出来一点时间把JDBC规范4. ... -
jconsole配置远程监控
2012-11-29 16:59 1643java -Djava.rmi.server. ...
相关推荐
Java枚举类型是Java语言中一种特殊的类,用于定义固定的常量集合,它提供了一种安全、类型化的方式来表示一组有限的值。枚举在Java中被引入为一个完整的类型,不同于C++中的枚举,这使得Java枚举更加强大且易于使用...
Java枚举(enum)是Java语言中的一种特殊数据类型,用于定义一组有限的常量,这些常量在程序中作为固定的值使用。枚举在Java中被引入,目的是为了更好地管理和使用常量,提高代码的可读性和安全性。在本实例代码中,...
### Java枚举类型详解 #### 一、引言 在Java编程语言中,枚举(Enum)作为一种重要的数据类型,在程序设计中扮演着不可或缺的角色。本文将深入探讨Java枚举类型的特性和用法,并通过具体实例说明其优势所在。枚举...
在Java编程语言中,枚举是一种特殊的类类型,用于定义一组预定义的值。尽管Java在早期版本中并未直接支持枚举,但在Java 5及以后版本中引入了枚举类型,以满足开发者对于类型安全和高效代码的需求。以下是对枚举类型...
Java枚举是面向对象编程中的一个重要特性,它用于定义固定的常量集合,这些常量通常代表某种特定的数据类型。在Java中,枚举提供了一种更安全、更规范的方式来处理常量,相比于传统的final static变量,枚举具有更多...
本文将深入探讨Java枚举的一些鲜为人知的特性。 1. 枚举默认值与自定义值: Java枚举的默认值是从0开始的整数序列,如示例中的Color枚举。然而,我们可以通过自定义构造函数为每个枚举实例赋予特定的值,如...
Java枚举类型(Enum)是Java SE 5.0引入的一种新的数据类型,它为开发者提供了更为强大且安全的方式来表示一组常量。枚举在Java中不仅是一个类,还是一种特殊的类型,允许我们定义自己的常量集合。接下来,我们将...
本篇文章将深入探讨Java枚举的特性、用法以及如何在实际开发中充分利用它们。 一、枚举的基本用法 1. 声明枚举类型: ```java public enum Color { RED, GREEN, BLUE } ``` 在这里,`Color`是枚举类型,`RED`, `...
Study7 类:Java 枚举 Study8 类:Java 反射 Study9 类:Java 注解 Study10 类:Java List、Set、Map Study11 类:Java try-catch-finally 异常捕获与处理 Study12 类:Java 自定义异常 Study13 类:Java 线程创建与...
这篇博客将深入探讨Java枚举的特性和使用方法,包括`EnumSet`和`EnumMap`这两个与枚举相关的数据结构。 首先,枚举定义的基本语法是`public enum EnumName {constant1, constant2, ...}`。每个枚举常量都是`...
### Java 枚举类型详解 #### 一、引言 ...通过以上的介绍,我们可以看到Java枚举类型不仅提供了类型安全的保障,还为开发者带来了极大的灵活性。合理地使用枚举类型,可以显著提高代码的质量和可维护性。
java枚举结果类、根据状态值获取枚举值 Controller: /** 模块类型枚举 */ model.addAttribute("mType", ModuleTypeEnum.ModuleTypeShow()); ftl: value="${mType.key}:${mType.value}” </#list>
Java枚举(Enum)状态机是一种使用枚举类型来实现状态转换逻辑的编程技术,它在Java编程中被广泛应用于管理对象的状态变化。状态机是一种模型,用于描述一个系统或对象在不同时间点可能存在的状态以及如何从一个状态...
Java枚举目录下的所有文件,列出文件名,是一个Java目录直读程序的例子,代码中定义了一个showDirContent方法,该方法实现取得目录内容,用路径实例化一个文件对象,重点:取得目录内所有文件列表,实例化一个...
Java枚举类型(enum)是Java语言中一种特殊的类,用于定义一组固定的常量。它在许多场景下作为替代常量或单例模式的选择,提供了更安全、更易读的代码。下面我们将深入探讨Java枚举类的用法及其优势。 1. **枚举的...
以下是关于Java枚举类型的详细知识点: 1. **枚举定义**: - 枚举类型通过`enum`关键字来定义,例如`public enum Color {RED, BLUE, BLACK, YELLOW, GREEN}`。 - 枚举实际上是`java.lang.Enum`类的子类,这意味着...
在Java编程语言中,`Enum`(枚举)是一种特殊的类类型,用于定义固定的、预定义的常量集合。它们在程序设计中扮演着重要的角色,特别是在需要表示一组固定值时,如状态、颜色、星期等。本资源包提供了一些关于`Enum`...
枚举(Enumeration)是Java中的一个特殊类类型,用于定义一组常量。本项目"test-enum-demo-master"显然是一个用于演示如何通过反射来操作枚举类的示例。 首先,让我们理解枚举类的基本概念。枚举类在Java中用于定义...
Java枚举类型是Java语言中的一种特殊的类,用于定义一组固定的常量集合。它在Java中扮演着重要的角色,提供了一种安全、类型化的常量表示方式,比传统的final static变量更具有优势。理解Java枚举类型对于编写高质量...
2. **自动实现 Comparable 和 Enum**:每个枚举类型都默认继承了 `java.lang.Enum` 类,因此枚举实例自动实现了 `Comparable` 接口,可以直接比较枚举值的顺序。 3. **枚举集合**:可以通过 `values()` 方法获取...