java 1.5以后才出现enum的关键字

所有的enum类都继承自Enum类,所以enum类无法再继承其他的类,可以实现接口,枚举类出了不能被继承其余的与普通类的特性一致,

枚举类的构造函数只能自己类内使用

enum类在编译阶段,编译器会把其编译成普通的类,添加values与valueof静态方法

enum MM{YOU,ME}

javap 该类后结果如下

final class MM extends java.lang.Enum{
public static final MM YOU;
public static final MM ME;
static {};
public static MM[] values();
public static MM valueOf(java.lang.String);
}

我们可以看的其变成了最终类所以不可以被继承,添加了values和valueof静态方法

看一个实现接口的例子

接口

public interface IMM {
public void m();
}

枚举类

enum MM implements IMM {
YOU("SD") {
@Override
public void m() {
System.out.println("you"); }
},
ME("fdsa");
MM(String a) {
m = a;
} private String m; public String getA() {
return m;
} @Override
public void m() {
System.out.println("main"); }
}

java p 反编译后

class MM extends java.lang.Enum implements IMM{
public static final MM YOU;
public static final MM ME;
static {};
public java.lang.String getA();
public void m();
public static MM[] values();
public static MM valueOf(java.lang.String);
MM(java.lang.String, int, java.lang.String, MM);
}

但是重载的方法m,类是如何知道的呢

使用接口组织枚举,来解决无法从enum继承子类

在一个接口的内部创建实现该接口的枚举,以此将元素进行分组,可以达到将枚举元素分类组织的目的。

public interface Food {
enum dezzert implements Food {
D, E, F;
} enum water implements Food {
W, R, T;
} enum Appetize implements Food {
A, B, C;
}
}

资料:

http://blog.jobbole.com/31597/

java枚举学习enum的更多相关文章

  1. Java 枚举(enum)的学习

    Java 枚举(enum)的学习 本文转自:https://blog.csdn.net/javazejian/article/details/71333103 枚举的定义 在定义枚举类型时我们使用的关 ...

  2. 【转】java枚举类型enum的使用

    原文网址:http://blog.csdn.net/wgw335363240/article/details/6359614 java 枚举类型enum 的使用 最近跟同事讨论问题的时候,突然同事提到 ...

  3. 转载 java枚举类型enum的使用 (原文地址:http://blog.csdn.net/wgw335363240/article/details/6359614)

    java枚举类型enum的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java中定义的常量值不采用enmu枚举类型,而采用public final static 类型来定义呢?以前我们都是采 ...

  4. 深入理解Java枚举类型(enum)

    https://blog.csdn.net/javazejian/article/details/71333103 深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(en ...

  5. 【转】掌握java枚举类型(enum type)

    原文网址:http://iaiai.iteye.com/blog/1843553 1   背景 在java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量.之前我们通常利用 ...

  6. Java枚举类enum

    枚举类enum是JDK1.5引入的,之前都是用public static final int enum_value来代替枚举类的.枚举类enum是一种特殊的类,它默认继承了类java.lang.Enu ...

  7. Java 枚举(enum)详解

    概念: Java1.5发行版本中增加了新的引用类型--枚举类型(enum type).枚举类型是指由一组固定的常量组成合法值的类型.在Java虚拟机中,枚举类在进行编译时会转变成普通的Java类. 创 ...

  8. Java枚举类型enum使用详解

      java的Enum枚举类型终于在j2se1.5出现了.之前觉得它只不过是鸡肋而已,可有可无.毕竟这么多年来,没有它,大家不都过得很好吗?今日看<Thinking in Java>4th ...

  9. java 枚举类 enum 总结

    枚举定义: enum是计算机编程语言中的一种数据类型.枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把这些量 ...

随机推荐

  1. Redis1 介绍和字典

    Redis介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(列表).set(集合).zset(sor ...

  2. (转)Javascript模块化编程(三):require.js的用法

    这个系列的第一部分和第二部分,介绍了Javascript模块原型和理论概念,今天介绍如何将它们用于实战. 我采用的是一个非常流行的库require.js. 一.为什么要用require.js? 最早的 ...

  3. Android selector背景选择器

    selector根据不同的选定状态来定义不同的现实效果 常用属性: android:state_selected--------选中 android:state_focused--------获得焦点 ...

  4. Data Structure Array: Given an array arr[], find the maximum j – i such that arr[j] > arr[i]

    http://www.geeksforgeeks.org/given-an-array-arr-find-the-maximum-j-i-such-that-arrj-arri/ #include & ...

  5. 【leetcode刷题笔记】Reverse Nodes in k-Group

    Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. If ...

  6. 【leetcode刷题笔记】Reverse Words in a String

    Given an input string, reverse the string word by word. For example,Given s = "the sky is blue& ...

  7. poj 3083 Children of the Candy Corn 【条件约束dfs搜索 + bfs搜索】【复习搜索题目一定要看这道题目】

    题目地址:http://poj.org/problem?id=3083 Sample Input 2 8 8 ######## #......# #.####.# #.####.# #.####.# ...

  8. The Great Pan

                                             The Great Pan Time Limit:1000MS     Memory Limit:65536KB    ...

  9. log4net性能小探

    初步测试了Log4性能.Appender架构如下. 一般客户端,使用FileAppender,把Log记录在本地磁盘. <lockingModel type="log4net.Appe ...

  10. LINQ 学习路程 -- 查询操作 Average Count Max Sum

    IList<, , }; var avg = intList.Average(); Console.WriteLine("Average: {0}", avg); IList ...