当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java Java.lang.Enum用法及代码示例


枚举类存在于 java.lang 包中。它是所有Java语言枚举类型的公共基类。有关枚举的信息,请参阅enum in java

Class Declaration

public abstract class Enum<E extends Enum>
extends Object
implements Comparable, Serializable

正如我们所看到的,Enum 是一个Abstract类,所以我们不能创建 Enum 类的对象。

Methods in Enum Class

Enum 类提供了 10 个有用的方法。其中大多数是从 Object 类覆盖的。这些方法在 Enum 类中声明为 Final,因此程序员无法修改任何枚举常量。

  1. 最终字符串name():此方法返回此枚举常量的名称,该名称与其枚举声明中的声明完全相同。
    Syntax : 
    public final String name()
    Parameters : 
    NA
    返回:
    the name of this enum constant
    
    
    // Java program to demonstrate name() method 
    enum Color 
    { 
        RED, GREEN, BLUE; 
    } 
       
    public class Test 
    { 
        // Driver method 
        public static void main(String[] args) 
        { 
            Color c1 = Color.RED; 
            System.out.print("Name of enum constant: "); 
      
            // name method 
            System.out.println(c1.name()); 
        } 
    } 

    输出:

    Name of enum constant: RED
    
  2. 最终int ordinal():该方法返回该枚举常量的索引。
    Syntax : 
    public final int ordinal()
    Parameters : 
    NA
    返回:
    the ordinal of this enumeration constant
    
    
    // Java program to demonstrate ordinal() method 
    enum Color 
    { 
        RED, GREEN, BLUE; 
    } 
       
    public class Test 
    { 
        // Driver method 
        public static void main(String[] args) 
        { 
            Color c1 = Color.GREEN; 
            System.out.print("ordinal of enum constant "+c1.name()+" : "); 
      
            // ordinal method 
            System.out.println(c1.ordinal()); 
        } 
    } 

    输出:

    ordinal of enum constant GREEN : 1
    
  3. 字符串toString():此方法返回表示此枚举常量的 String 对象。此方法与name()方法相同。
    Syntax : 
    public String toString()
    Parameters : 
    NA
    返回:
    a string representation of this enumeration constant
    Overrides :
    toString in class Object
    
    
    // Java program to demonstrate toString() method 
    enum Color 
    { 
        RED, GREEN, BLUE; 
    } 
       
    public class Test 
    { 
        // Driver method 
        public static void main(String[] args) 
        { 
            Color c1 = Color.GREEN; 
              
            // getting string representation of enum 
            // using toString() method 
            String str = c1.toString(); 
              
            System.out.println(str); 
        } 
    } 

    输出:

    GREEN
    
  4. 最终布尔值 equals(Object obj):如果指定的对象等于此枚举常量,则此方法返回 true,否则返回 false。
    Syntax : 
    public final boolean equals(Object obj)
    Parameters : 
    obj - the object too be compared for equality with this enum.
    返回:
    true if the specified object is equal to this enum constant. 
    false otherwise
    Overrides :
    equals in class Object
    
    
    // Java program to demonstrate equals() method 
    enum Color 
    { 
        RED, GREEN, BLUE; 
    } 
       
    public class Test 
    { 
        // Driver method 
        public static void main(String[] args) 
        { 
            Color c1 = Color.RED; 
            Color c2 = Color.GREEN; 
            Color c3 = Color.RED; 
              
            // checking equality between enums 
            // using equals() method 
              
            boolean b1 = c1.equals(c2); 
            boolean b2 = c1.equals(c3); 
            boolean b3 = c2.equals(null); 
              
            System.out.println("is c1 equal to c2 : " + b1); 
            System.out.println("is c1 equal to c3 : " + b2); 
            System.out.println("is c2 equal to null : " + b3); 
        } 
    } 

    输出:

    is c1 equal to c2 : false
    is c1 equal to c3 : true
    is c2 equal to null : false
    
  5. 最终int hashCode():此方法返回此枚举常量的哈希码。实际上这个方法只包含一条语句,即“return super.hashCode()”,该语句又调用了Object类的hashCode()方法。
    Syntax : 
    public final int hashCode()
    Parameters : 
    NA
    返回:
    a hash code for this enum constant.
    Overrides :
    hashCode in class Object
    
    
    // Java program to demonstrate hashCode() method 
    enum Color 
    { 
        RED, GREEN, BLUE; 
    } 
       
    public class Test 
    { 
        // Driver method 
        public static void main(String[] args) 
        { 
            Color c1 = Color.RED; 
            System.out.print("hashcode of enum constant "+ c1.name() +" : "); 
      
            // hashcode method 
            System.out.println(c1.hashCode()); 
              
            Color c2 = Color.GREEN; 
            System.out.print("hashcode of enum constant "+ c2.name() +" : "); 
      
            // hashcode method 
            System.out.println(c2.hashCode()); 
        } 
    } 

    输出:

    hashcode of enum constant RED : 366712642
    hashcode of enum constant GREEN : 1829164700
    
  6. 最终intcompareTo(E obj):这个方法“compares”这个枚举与指定对象为次序。枚举常量只能与相同枚举类型的其他枚举常量进行比较。
    Syntax : 
    public int compareTo(E obj)
    Parameters : 
    obj - the object to be compared.
    返回:
    a negative integer if this object is at less ordinal than the specified object
    zero if this object is at equal ordinal than the specified object
    a positive integer if this object is at greater ordinal than the specified object
    Throws :
    NullPointerException - if the argument is null
    
    
    // Java program to demonstrate compareTo() method 
    enum Color 
    { 
        RED, GREEN, BLUE; 
    } 
       
    public class Test 
    { 
        // Driver method 
        public static void main(String[] args) 
        { 
            Color c1 = Color.RED; 
            Color c2 = Color.GREEN; 
            Color c3 = Color.RED; 
            Color c4 = Color.BLUE; 
              
            System.out.print("Comparing "+c1.name()+" with "+ c2.name() +" : "); 
              
            // compareTo method 
            System.out.println(c1.compareTo(c2)); 
              
            System.out.print("Comparing "+c1.name()+" with "+ c3.name() +" : "); 
              
            // compareTo method 
            System.out.println(c1.compareTo(c3)); 
              
            System.out.print("Comparing "+c4.name()+" with "+ c2.name() +" : "); 
              
            // compareTo method 
            System.out.println(c4.compareTo(c2)); 
              
            // The following statement throw NullPointerException 
            // as argument of compareTo method is null 
            // System.out.println(c4.compareTo(null)); 
             
        } 
    } 

    输出:

    Comparing RED with GREEN : -1
    Comparing RED with RED : 0
    Comparing BLUE with GREEN : 1
    
  7. static <T extends Enum> T valueOf(类枚举类型,字符串名称):该方法返回具有指定名称的指定枚举类型的枚举常量。该名称必须与用于声明此类型的枚举常量的标识符完全匹配。
    Syntax : 
    public static <T extends Enum> T valueOf(Class enumType,String name)
    TypeParameters : 
    T - The enum type whose constant is to be returned
    Parameters : 
    enumType - the Class object of the enum type from which to return a constant
    name - the name of the constant to return
    返回:
    the enum constant of the specified enum type with the specified name
    Throws :
    IllegalArgumentException - if the specified enum type has no 
    constant with the specified name or the specified class object
    does not represent an enum type
    NullPointerException - if enumType or name is null
    
    
    // Java program to demonstrate valueOf() method 
    enum Color 
    { 
        RED, GREEN, BLUE; 
    } 
       
    public class Test 
    { 
        // Driver method 
        public static void main(String[] args) 
        { 
            // getting value of enum with specified String 
            // using valueOf method 
            Color c1 = Color.valueOf("RED"); 
            Color c2 = Color.valueOf("GREEN"); 
              
            // name method 
            System.out.println(c1.name()); 
            System.out.println(c2.name()); 
              
            // The following statement throw IllegalArgumentException 
            // as GrEEN is not an enum constant 
            //  Color c3 = Color.valueOf("GrEEN"); 
               
            // The following statement throw NullPointerException 
            // as argument of valueOf method is null 
           // Color c4 = Color.valueOf(null); 
        } 
    } 

    输出:

    RED
    GREEN
    
  8. 最终类<E>getDeclaringClass():该方法返回与该枚举常量的枚举类型对应的 Class 对象。任意 如果此方法返回相同的 Class 对象,则两个枚举常量 e1 和 e2 具有相同的枚举类型。
    Syntax : 
    public final Class <E> getDeclaringClass()
    Parameters : 
    NA
    返回:
    the Class object corresponding to this enum constant's enum type
    
    
    // Java program to demonstrate getDeclaringClass() method 
    enum Color 
    { 
        RED, GREEN, BLUE; 
    } 
      
    enum Day 
    { 
        MONDAY, TUESDAY ; 
    } 
      
    public class Test 
    { 
        // Driver method 
        public static void main(String[] args) 
        { 
            // getting value of enum with specified String 
            // using valueOf method 
            Color c1 = Color.valueOf("RED"); 
            Color c2 = Color.valueOf("GREEN"); 
            Day d1 = Day.valueOf("MONDAY"); 
            Day d2 = Day.valueOf("TUESDAY"); 
              
            System.out.print("Class corresponding to "+ c1.name() +" : "); 
          
            // getDeclaringClass method 
            System.out.println(c1.getDeclaringClass()); 
              
            System.out.print("Class corresponding to "+ c2.name() +" : "); 
              
            // getDeclaringClass method 
            System.out.println(c2.getDeclaringClass()); 
              
            System.out.print("Class corresponding to "+ d1.name() +" : "); 
              
            // getDeclaringClass method 
            System.out.println(d1.getDeclaringClass()); 
              
            System.out.print("Class corresponding to "+ d2.name() +" : "); 
              
            // getDeclaringClass method 
            System.out.println(d2.getDeclaringClass()); 
        } 
    } 

    输出:

    Class corresponding to RED : class Color
    Class corresponding to GREEN : class Color
    Class corresponding to MONDAY : class Day
    Class corresponding to TUESDAY : class Day
    
  9. 最终对象clone():此方法保证枚举永远不会被克隆,这是保留其 “singleton” 状态所必需的。编译器在内部使用它来创建 Enum 常量。
    Syntax : 
    public final Object clone() throws CloneNotSupportedException
    Parameters : 
    NA
    返回:
    NA
    Overrides :
    clone in class Object
    Throws :
    CloneNotSupportedException-if the object's class does not support the Cloneable interface.
    
    
    // Java program to demonstrate clone() method 
    enum Color 
    { 
        RED, GREEN, BLUE; 
    } 
      
    public class Test 
    { 
        // Driver method 
        public static void main(String[] args)  
                throws CloneNotSupportedException 
        { 
            System.out.println("Enums are never cloned"); 
            Test t = new Test() 
            { 
                // final clone method 
                protected final Object clone()  
                        throws CloneNotSupportedException  
                { 
                    return new CloneNotSupportedException(); 
                } 
            };     
              
            System.out.println(t.clone()); 
        } 
    } 

    输出:

    Enums are never cloned
    java.lang.CloneNotSupportedException
    
  10. 最终无效finalize():该方法保证枚举类不能有finalize方法。
    Syntax : 
    protected final void finalize()
    Parameters : 
    NA
    返回:
    NA
    Overrides :
    finalize in class Object
    
    
    // Java program to demonstrate finalize() method 
    enum Color 
    { 
        RED, GREEN, BLUE; 
    } 
      
    public class Test 
    { 
        // Driver method 
        public static void main(String[] args) throws Throwable  
        { 
            System.out.println("enum classes cannot have finalize methods"); 
            Test t = new Test() 
            { 
                // final finalize method 
                protected final void finalize() throws Throwable  
                { 
                       // empty implementation 
                };           
            }; 
        } 
    } 

    输出:

    enum classes cannot have finalize methods
    


相关用法


注:本文由纯净天空筛选整理自佚名大神的英文原创作品 Java.lang.Enum Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。