`

String和enum的互相转换

    博客分类:
  • java
 
阅读更多
定义以下枚举

public enum BookType
{
   Ticket,
   Trip,
   Hotel
}

从String到enum
BookType type = (BookType)Enum.Parse(typeof(BookType),"Ticket");

从enum到String
方法一:ToString();
方法二:s = Enum.GetName(typeof(BookType), BookType.Ticket);









DK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。
用法一:常量
在JDK1.5 之前,我们定义常量都是: public static fianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。

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 要求必须先定义 enum 实例。

Java代码  收藏代码
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; 
    } 
    public void setName(String name) { 
        this.name = name; 
    } 
    public int getIndex() { 
        return index; 
    } 
    public void setIndex(int index) { 
        this.index = index; 
    } 


用法四:覆盖枚举的方法
下面给出一个toString()方法覆盖的例子。

Java代码  收藏代码
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; 
    } 
    //覆盖方法 
    @Override 
    public String toString() { 
        return this.index+"_"+this.name; 
    } 


用法五:实现接口
所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。

Java代码  收藏代码
public interface Behaviour { 
    void print(); 
    String getInfo(); 

public enum Color implements Behaviour{ 
    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; 
    } 
//接口方法 
    @Override 
    public String getInfo() { 
        return this.name; 
    } 
    //接口方法 
    @Override 
    public void print() { 
        System.out.println(this.index+":"+this.name); 
    } 


用法六:使用接口组织枚举

Java代码  收藏代码
public interface Food { 
    enum Coffee implements Food{ 
        BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO 
    } 
    enum Dessert implements Food{ 
        FRUIT, CAKE, GELATO 
    } 


用法七:关于枚举集合的使用
java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的key是enum类型,而value则可以是任意类型。关于这个两个集合的使用就不在这里赘述,可以参考JDK文档。
关于枚举的实现细节和原理请参考:
参考资料:《ThinkingInJava》第四版
分享到:
评论

相关推荐

    C#实现实体类与字符串互相转换的方法

    本篇文章将详细介绍如何使用C#实现实体类与字符串之间的互相转换,主要涉及到了C#的反射(Reflection)技术以及对象和字符串的转换技巧。 首先,我们来看如何将实体类转换为字符串。这个过程通常涉及到遍历实体类的...

    C#.Net基础5 基础入门知识 数据类型 范例 ppt 实例 可以直接运行

    我们可以将一个枚举类型的变量跟int类型和string类型互相转换。 枚举类型默认是跟int类型相互兼容的,所以可以通过强制类型转换的语法互相转换。 当转换一个枚举中没有的值的时候,不会抛异常,而是直接将数字显示...

    java基础+javaee

    这是因为`Integer`和`Long`都是`Number`的子类,而不是直接互相转换的关系。 #### 三、静态引用概念 静态导入允许开发者直接使用类中的静态成员而无需前缀。例如,`import static java.lang.System.out;`之后,...

    JAVA SKD5.0实例宝典.rar

    14. **枚举类的枚举常量之间的关系(Relationships between Enum Constants)**:枚举常量之间可以定义关系,如继承或实现接口,甚至互相引用。 通过这个实例宝典,开发者将能够深入理解并熟练运用Java SDK 5.0的...

    Swift Standard-Library

    字符串操作包括连接、分割、查找子串等,同时也可与字符数组互相转换。 3. **数组(Array)**和**集合(Set)**:Swift中的数组是有序的元素集合,可以存储相同或不同类型的元素。集合则是无序且不包含重复元素的...

    jdk1.5 1.6 1.7的新特征总结

    泛型允许在集合类中指定元素的类型,确保了在编译时就能进行类型检查,避免了运行时的强制类型转换和可能的ClassCastException。例如,你可以创建一个只包含String类型的ArrayList,如`Collection<String> c = new ...

    Java面试宝典2013_PDF版.pdf

    Java 7及更高版本中,`switch`语句可以作用于`byte`、`short`、`char`、`int`及其对应的包装类,以及`enum`类型和`String`对象。但在早期版本中,`switch`仅适用于整数类型和`enum`。 ### short类型的赋值问题 `...

    c# 入门学习掌握基本知识

    类型转换是编程中经常遇到的问题,理解何时以及如何进行类型转换对于编写高效和可靠的代码至关重要。 #### 第三部分:面向对象的 C# ##### 第九章 面向对象的程序设计 **9.1 面向对象的基本概念** 面向对象编程...

    深入理解Swift中的变量与常量

    此外,常量和变量不能互相转换,如果需要使用Swift的关键字作为名称,可以使用反引号包裹。 在Swift中,变量和常量的命名应当遵循一定的规范,使其具有可读性,便于团队协作。避免使用关键字作为名称,除非确实必要...

    个人笔记--Java_API

    泛型是一种在编译时检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。 **2.2 泛型集合** 通过使用泛型参数,可以在集合中存放特定类型的元素,避免了运行时的类型转换错误。 **2.3 泛型类...

    swift中文教学

    - 支持类型转换,例如 `Double(integerLiteral:)`。 5. **布尔值**: - `Bool` 类型表示逻辑值,可以是 `true` 或者 `false`。 6. **元组**: - 一种将多个值组合在一起的数据结构,每个位置都有一个明确的类型。...

    The Swift Programming Language中文完整版(CocoaChina精校)副本

    - **大写和小写字符串**:可以使用方法如`uppercased()`和`lowercased()`来转换字符串的大小写。 - **Unicode**:Swift支持Unicode标准,可以方便地处理各种字符编码。 #### 集合类型 - **数组**:一种有序的值...

    Java极品学习资料

    - 支持`int`、`char`、`enum`以及`String`类型的条件判断。 - 示例代码展示如何使用`switch`进行分支选择。 **实例变量与类变量的区别** - **实例变量**:每个对象独有的变量,存储在对象的堆内存中。 - **类变量**...

    iphone——Swift中文教程完整版

    - **Any 和 AnyObject 的转换**: Swift 提供了 `Any` 和 `AnyObject` 类型,用于处理不确定类型的值。 **2.19 类型嵌套** - **类型嵌套实例**: 类型可以嵌套在其他类型中。 - **类型嵌套的引用**: 可以通过类型...

Global site tag (gtag.js) - Google Analytics