`

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类型的赋值问题 `...

    深入理解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