Java中的Enum枚举类型总结
废话不多说,直接上代码,该例子来源于:http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
public enum Planet {
MERCURY (3.303e+23, 2.4397e6),
VENUS (4.869e+24, 6.0518e6),
EARTH (5.976e+24, 6.37814e6),
MARS (6.421e+23, 3.3972e6),
JUPITER (1.9e+27, 7.1492e7),
SATURN (5.688e+26, 6.0268e7),
URANUS (8.686e+25, 2.5559e7),
NEPTUNE (1.024e+26, 2.4746e7); private final double mass; // in kilograms
private final double radius; // in meters
/*1、构造器:可以给常量赋予更多的属性,必须是private,可以保证使用者不能私自new一个Enum出来*/
Planet(double mass, double radius)
{
this.mass = mass;
this.radius = radius;
}
private double mass() { return mass; }
private double radius() { return radius; } // universal gravitational constant (m3 kg-1 s-2)
public static final double G = 6.67300E-11;
//2、可以内定义丰富的方法*/
double surfaceGravity() {
return G * mass / (radius * radius);
} public static void main(String[] args) {
/*3、方法values()返回所有的枚举类型的数组
*4、方法ordinal()返回在枚举列表中的默认位置(从0开始)
*5、针对Enum的toString()方面直接输出枚举名称
*6、方法name()返回枚举名称
*/
for (Planet p : Planet.values())
System.out.println("Name:"+p.name()+" Position:"+p.ordinal()+" P:"+p);
/*7、方法valueOf可以从Stirng名称返回Enum类型的枚举类型*/
System.out.println(Planet.valueOf("NEPTUNE").name());
/*8、再来一个使用数组的例子*/
System.out.println(Planet.values()[2].name());
}
}
输出结果如下:
Name:MERCURY Position:0 P:MERCURY
Name:VENUS Position:1 P:VENUS
Name:EARTH Position:2 P:EARTH
Name:MARS Position:3 P:MARS
Name:JUPITER Position:4 P:JUPITER
Name:SATURN Position:5 P:SATURN
Name:URANUS Position:6 P:URANUS
Name:NEPTUNE Position:7 P:NEPTUNE
NEPTUNE
EARTH
下面用javap命令反编译Planet.class
/*1、Enum本身是一个继承自java.lang.Enum的类
2、枚举成员都是public static final类型
3、可以看到values、valueOf的方法声明
*/
public final class javalearn.Planet extends java.lang.Enum<javalearn.Planet> {
public static final javalearn.Planet MERCURY;
public static final javalearn.Planet VENUS;
public static final javalearn.Planet EARTH;
public static final javalearn.Planet MARS;
public static final javalearn.Planet JUPITER;
public static final javalearn.Planet SATURN;
public static final javalearn.Planet URANUS;
public static final javalearn.Planet NEPTUNE;
public static final double G;
static {};
double surfaceGravity();
public static void main(java.lang.String[]);
public static javalearn.Planet[] values();
public static javalearn.Planet valueOf(java.lang.String);
}
Java中的Enum枚举类型总结的更多相关文章
- Python中模拟enum枚举类型的5种方法分享
这篇文章主要介绍了Python中模拟enum枚举类型的5种方法分享,本文直接给出实现代码,需要的朋友可以参考下 以下几种方法来模拟enum:(感觉方法一简单实用) 复制代码代码如下: # way1 ...
- Java中的enum枚举类
首先说说为什么要写这个enum枚举类吧,是群里有个新手问:怎样把enum类中的值遍历得到,其实自己用的也很少.自己也是确实不知道,于是我去网上搜了不少,总结了些,希望对大家有帮助:首先我说说怎样遍历枚 ...
- Java中的Enum(枚举)用法介绍
1. 关于Java Enum:学过C/C++等语言的人,应该都对Enum类型略知一二.Enum一般用来表示一组相同类型的常量.如性别.日期.月份.颜色等.对这些属性用常量的好处是显而易见的,不仅可以保 ...
- C# 中的 enum(枚举) 类型使用例子
一.需要根据数字获取中文名称,C# 代码里面出现if 或switch 判断语句,比如下面的类为test1.class //获取计算类型的值 string AggregateType = string. ...
- Java基础教程:枚举类型
Java基础教程:枚举类型 枚举类型 枚举是将一具有类似特性的值归纳在一起的方法.比如,我们可以将周一到周日设计为一个枚举类型.彩虹的七种颜色设计为一个枚举类型. 常量实现枚举 我们通过定义常量的方式 ...
- 如何使用Java中的Enum类
Java1.5 中出现了枚举类型.当一个值都在一个固定的范围内变化,那就可以使用 enum 类型来定义.比如说,一周有七天,一年有四季. 没有枚举类的时候,我们用常量来定义一组范围值的: public ...
- MVC3不能正确识别JSON中的Enum枚举值
一.背景 在MVC3项目里,如果Action的参数中有Enum枚举作为对象属性的话,使用POST方法提交过来的JSON数据中的枚举值却无法正确被识别对应的枚举值. 二.Demo演示 为了说明问题,我使 ...
- 深入掌握Java中的enum
对于要在程序中要表示有限种类的某事物,一般我们可以采用两种方式,一是使用:public static final String 常量:二是使用enum来表示.一般而言前者简单,但是不能够很好的提供更多 ...
- Java中的enum
package com.st.java; /** * ENUM枚举类型的使用 * @author Administrator * 2016年04月10日 */ public enum MoneyTyp ...
随机推荐
- /proc/sys/net/ipv4/下各项的意义
/proc/sys/net/ipv4/icmp_timeexceed_rate这个在traceroute时导致著名的“Solaris middle star”.这个文件控制发送ICMP Tim ...
- 类型查找器 ITypeFinder
NopCommerce为了支持插件功能,以及支持一些自动注册的功能.系统提供了类型查找器.ITypeFinder以及实现类就是提供此功能.通过类型查找器可以查找本程序域中的类,也可以查找整个bin目录 ...
- 源码分析shiro认证授权流程
1. shiro介绍 Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能: 认证 - 用户身份识别,常被称为用户“登录”: 授权 - 访问控制: 密码加密 ...
- 关于删除linux多余内核
step 1: 查找当前正在使用的内核文件的版本号 #uname -r step 2: 列出所有的内核文件,使用rpm 或者 dpkg(基于linux系统) 命令 #rpm -q kernel 或者 ...
- MySQL中的保留字
本文转载自:http://www.cnblogs.com/lawdong/archive/2010/08/08/2357903.html ADD ALL ALTER ANALYZE AND AS AS ...
- [未完成]关于Eclipse4RCP书中内容总结
原文地址http://www.vogella.com/tutorials/EclipseRCP/article.html Table of Contents 1. Eclipse 4 1.1. Wha ...
- COGS 265 线段覆盖
265. 线段覆盖 ★★☆ 输入文件:xdfg.in 输出文件:xdfg.out 简单对比时间限制:2 s 内存限制:20 MB [问题描述] 有一根长度为 L 的白色条状物.有两种操 ...
- C#.net拖拽实现获得文件路径
思路: 通过DragEnter事件获得被拖入窗口的“信息”(可以是若干文件,一些文字等等), 在DragDrop事件中对“信息”进行解析. 窗体的AllowDrop属性必须设置成tru ...
- 学习ajax 总结
一.服务器客户端基础知识 通信是指不同计算机程序的通信,单单通过ip地址就能知道你找的是哪一台计算机,但是不知道是计算机上的哪个应用程序,要想知道是哪个程序就必须通过端口.这时候就可以问端口到底是什么 ...
- 1、关于Boolean(2015年05月30日)
背景:刚在看Effective Java,看到一段关于Boolean提供一个返回实例的静态方法的例子,便去看了下Boolean的源码,发现有些内容是之前没注意到的,于是便有了下面这些. 1. Bool ...