Enum类在java中存在。朗包。它是所有Java语言枚举类型的公共基类。有关枚举的信息,请参阅 java中的枚举
null
类别声明
public abstract class Enum<E extends Enum> extends Object implements Comparable, Serializable
正如我们所见,枚举是一个 摘要 同学们,所以我们 不能 创建类Enum的对象。
枚举类中的方法
Enum类提供了10个有用的方法。它们中的大多数都是从 对象 班这些方法在Enum类中声明为final,因此程序员不能修改任何Enum常量。
- 最终字符串名() :此方法返回此枚举常量的名称,该名称与其枚举声明中声明的名称完全相同。
Syntax : public final String name() Parameters : NA Returns : 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
- 最终整数序数() :此方法返回此枚举常量的索引。
Syntax : public final int ordinal() Parameters : NA Returns : 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
- String to字符串() :此方法返回表示此枚举常量的字符串对象。此方法与name()方法相同。
Syntax : public String toString() Parameters : NA Returns : 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
- 最终布尔等于(对象obj) :如果指定的对象等于此枚举常量,则此方法返回true,否则返回false。
Syntax : public final boolean equals(Object obj) Parameters : obj - the object too be compared for equality with this enum. Returns : 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
- final int hashCode() :此方法返回此枚举常量的哈希代码。实际上,这个方法只包含一条语句,即“return super.hashCode()”,它反过来调用对象类hashCode()方法。
Syntax : public final int hashCode() Parameters : NA Returns : 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
- 最终国际比较(E obj) :此方法将此枚举与指定的对象进行“比较” 顺序 .枚举常量只能与同一枚举类型的其他枚举常量进行比较。
Syntax : public int compareTo(E obj) Parameters : obj - the object to be compared. Returns : 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
- static
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 Returns : 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
- 最终类
getDeclaringClass() :此方法返回与此枚举常量的枚举类型对应的类对象。如果此方法为两个枚举常量e1和e2返回相同的类对象,则任意两个枚举常量e1和e2都属于相同的枚举类型。Syntax : public final Class <E> getDeclaringClass() Parameters : NA Returns : 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
- 最终对象克隆() :此方法保证从不克隆枚举,这是保持其“单例”状态所必需的。编译器在内部使用它来创建枚举常量。
Syntax : public final Object clone() throws CloneNotSupportedException Parameters : NA Returns : 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
- 最终作废定稿() :此方法保证枚举类不能有finalize方法。
Syntax : protected final void finalize() Parameters : NA Returns : 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
本文由 高拉夫·米格拉尼 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END