// ref: http://crunchify.com/why-and-for-what-should-i-use-enum-java-enum-examples/
// You should always use enums when a variable (especially a method parameter)
// can only take one out of a small set of possible values.
// Some very important points on Java Enum:
// 1、由于所有的枚举类型均继承自Java.Lang.Enum,所以枚举类型不能再继承其他类
// 2、类型安全,有自己的命名空间,不能随意赋值为Enum Constant之外的值
// 3、可以在创建时为Enum常量指定值
// 4、Enum常量是显式 static和final的,一旦创建就不能再被改变
// 5、Enum常量可以使用Switch-Case,==,和equals方法进行比较
// 6、不能使用new操作符创建新的实例,Enum的构造器是私有的,Enum常量只能在Enum内部创建
// 7、当任何Enum常量第一次被调用或引用时Enum的实例被创建
// 8、一个枚举列表指定了一个类型的取值范围
// 9、Enum可以在类内或者类外声明,不能在方法中声明
// 10、类外声明的Enum不能是static,final,abstract,protected,或者private
// 11、Enum可以包含构造器,方法,变量,和常量类
// 12、Enum常量可以传递参数到Enum构造器,使用BIG(8),“8”即是传递给Enum构造器的值
// 13、Enum的构造器可以有参数,可以被重载
// 14、Enum构造器不能直接在代码中调用,当一个Enum被初始化时会自动调用构造器函数
// 15、Enum声明语句末尾的分号可以省略
public class EnumTest {
// define a enum class Company,枚举也可以看做一个类
public enum Company {
EBAY(30), PAYPAL(10), GOOGLE(15), YAHOO(20), ATT(25);
// 定义一个私有变量 value
private int value;
// Company枚举类的初始化方法
private Company(int value) {
this.value = value;
}
private void PrintTest() {
System.out.println("Print Test Method: " + this.name());
}
}
// define a field cName
Company cName;
// initialization
public EnumTest(Company cName) {
this.cName = cName;
}
// define a method companyDetails
public void companyDetails() {
switch (cName) {
case EBAY:
System.out.println("Biggest Market Place in the World");
break;
case PAYPAL:
System.out.println("Simplest way to manage Money.");
break;
case GOOGLE:
case YAHOO:
System.out.println("1st Web 2.0 Company.");
break;
default:
System.out.println("Google - biggest search gaint.. ATT - my carrier provider..");
break;
}
}
public static void main(String[] args) {
// EnumTest ebay = new EnumTest(Company.EBAY);
// ebay.companyDetails();
// EnumTest att = new EnumTest(Company.ATT);
// att.companyDetails();
// for (Company cName: Company.values()) {
// System.out.println("Company Value: " + cName.value + " - Company Name: " + cName);
// }
// Company.EBAY.PrintTest();
// Company eBay = Company.EBAY;
// if (eBay == Company.EBAY) {
// System.out.println("enum in java can be compared using ==");
// }
}
}
Java Enum数据类型
最新推荐文章于 2025-03-24 07:51:34 发布