java----枚举
枚举:
枚举这种类型占用内存空间大,根据需要选择枚举或者常量
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。基本使用
class ColorTest{
//如果使用枚举,不需要再本类中定义...即使定义了,也用不到
// private int red;
// private int blue;
// private int black;
// private int color;
private Color colorenum;
// public void test(){
// color = red;
// color = 1;
// }
//从编码的角度(编译期),限制了colorenum的选择范围;
public void test2(){
//如果希望color强制只能为red,blue,black中的一种;不能是color = 1;
colorenum = Color.red;
//colorenum = 1; 此时会报错,编辑期不给通过
System.out.println(colorenum); //red
System.out.println(colorenum.name()); //red
System.out.println(colorenum.ordinal()); //2,枚举的序号;
System.out.println(colorenum.toString());//red
for (Color s:Color.values()) {
System.out.println(s);
}
}
public void test3(){
//存放枚举的集合
EnumSet<Color> colors = EnumSet.allOf(Color.class);
for (Color c:colors){
System.out.println(c);
}
}
public void test4() {
EnumMap<Color,String> map = new EnumMap<Color, String>(Color.class);
map.put(Color.red,"111");
map.put(Color.blue,"222");
for (Color c:map.keySet()){
System.out.println(c);
}
}
}
枚举构造方法
public class Demo{
public static void main(String[] args) {
ColorTest colorTest = new ColorTest();
colorTest.test();
}
}
enum Color {
blue,black(10),red;
//可以定义属性
private int color;
//只能定义私有的构造方法
private Color(){
System.out.println("无参构造器");
}
private Color(int color){
this.color = color;
System.out.println("有参构造器");
}
}
class ColorTest{
private Color colorenum;
public void test(){
//用到枚举类型Color,所有的构造方法都会被调用
colorenum = Color.red;
}
}
让枚举实现接口
Color.red 是一个对象,对象可以调用方法;
public class Demo{
public static void main(String[] args) {
ColorTest colorTest = new ColorTest();
colorTest.test();
}
}
interface info{
int getColor();
}
enum Color implements info{
blue,black(10),red;
//可以定义属性
private int color;
//只能定义私有的构造方法
private Color(){
System.out.println("无参构造器");
}
private Color(int color){
this.color = color;
System.out.println("有参构造器");
}
@Override
public int getColor() {
return this.color;
}
}
class ColorTest{
private Color colorenum;
public void test(){
int num = Color.red.getColor();
System.out.println(num);
int num2 = Color.black.getColor();
System.out.println(num2);
}
}
再枚举中定义抽象方法
public class Demo{
public static void main(String[] args) {
ColorTest colorTest = new ColorTest();
colorTest.test();
}
}
enum Color {
blue {
@Override
public String getColorName() {
return "blue";
}
},black() {
@Override
public String getColorName() {
return "black";
}
},red {
@Override
public String getColorName() {
return "red";
}
};
public abstract String getColorName();
}
class ColorTest{
public void test(){
String name = Color.red.getColorName();
System.out.println(name);
}
}
枚举实现单例模式
public class Demo{
public static void main(String[] args) {
//通过SINGLETON对象调用method方法;
Color.SINGLETON.method();
}
}
enum Color {
SINGLETON;
public void method(){
System.out.println("单例模式");
}
}
更多精彩

