枚举
所谓枚举就是指定好取值范围,所有内容只能从指定范围取得。
例如,想定义一个color类,他只能有RED,GREEN,BLUE三种植。
使用简单类完成颜色固定取值问题。
1,就是说,一个类只能完成固定几个对象。
public enum Color{ RED,GREEN,BLUE ; // 定义三个枚举的类型 };
第一种方法:传统的设定固定值,通过使得构造方法私有化(使得值固定几个,不可从外部修改),通过单态模式。
代码如下:
package 类集; class Color{ public static final Color RED = new Color("红色") ; // 定义第一个对象 public static final Color GREEN = new Color("绿色") ; // 定义第一个对象 public static final Color BLUE = new Color("蓝色") ; // 定义第一个对象 private String name ; private Color(String name){ this.name = name ; } public void setName(String name){ this.name = name ; } public String getName(){ return this.name ; } public static Color getInstance(int i){ switch(i){ case 1:{ return RED ; } case 2:{ return GREEN ; } case 3:{ return BLUE ; }default:{ return null ; } } } }; public class test1{ public static void main(String args[]){ Color c1 = Color.RED ; // 取得红色 System.out.println(c1.getName()) ; // 输出名字 Color c2 = Color.getInstance(3) ; // 根据编号取得名字 System.out.println(c2.getName()) ; } };
输出结果:
红色
蓝色
此时程序限定了范围,达到了枚举的功能。
枚举定义格式如下:
emum 枚举类型名称{
枚举对象1,枚举对象2,枚举对象3,,;
}
JAVA库中颜色枚举的定义如下:
public enum Color{ RED,GREEN,BLUE ; // 定义三个枚举的类型 };
使用:
package 类集; import java.awt.Color; public class test1{ public static void main(String args[]){ Color c = Color.BLUE ; // 取出蓝色 System.out.println(c) ; } };
因为枚举已经定义好了范围,所以可以使用foreach进行全部的输出,使用“枚举.VALUE()”的形式取得全部内容。
package 类集; enum color1 { red,black,green } public class test1{ public static void main(String args[]){ for(color1 c:color1.values()) { System.out.println(c); } } }
枚举还可以直接将内容在switch语句使用。
package 类集; enum color1 { red,black,green } public class test1{ public static void main(String args[]){ for(color1 c:color1.values()) { print(c); } } public static void print(color1 color){ switch(color){ case red:{ System.out.println("红颜色") ; break ; } case black:{ System.out.println("黑颜色") ; break ; } case green:{ System.out.println("绿颜色") ; break ; } default:{ System.out.println("未知颜色") ; break ; } } } };
总结:使用枚举可以限制取值的范围。
可以使用enum定义取值。