枚举
所谓枚举就是指定好取值范围,所有内容只能从指定范围取得。
例如,想定义一个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定义取值。