java c枚举类型_java 枚举类

在J2SE5.0中要定义枚举类型是使用enum关键词,枚举类型主要提供一些常数。虽然语法上不像是在定义类,但枚举类型本质上就是一个类。所以编译完成后,会产生一个.class文件。

继承自java.lang.Enum类。而每个被枚举的成员其实就是定义的枚举类型的一个实例,它们都被默认为final。无法改变常数名称所设定的值,它们也是public和static的成员,这与接口中的常

量限制相同。可以通过类名称直接使用它们。

package base;

public class TestEnum {

// 最普通的枚举

public enum ColorSelect {

red, green, yellow, blue;

}

// 枚举也可以象一般的类一样添加方法和属性

public enum Season {

// 枚举列表必须写在最前面,否则编译出错

winter, spring, summer, fall;

private final static String location = "Phoenix";

public static Season getBest() {

if (location.equals("Phoenix"))

return winter;

else

return summer;

}

}

// 带有有构造方法 /

public enum Temp {

// 通过括号赋值,而且必须有带参构造器和属性并赋值,

absoluteZero(-459), freezing(32), boiling(212), paperBurns(451);

private final int value;

private final String value2;

public int getValue() {

return value;

}

// 构造器默认也只能是private, 从而保证构造函数只能在内部使用

private Temp(int value) {

this.value = value;

this.value2 = null; // 成员必须初始化

}

Temp(String value2) {

this.value2 = value2;

this.value = 0;

}

}

interface IDescription {

public String getDescription();

}

// 为每个枚举值定义各自的类本体与方法实现

enum MoreAction implements IDescription {

TURN_LEFT {

public String getString() {

return "向左转";

}

@Override

public String getDescription() {

return "向左转";

}

}, // 注意这里的枚举值分隔使用,

TURN_RIGHT {

public String getString() {

return "向右转";

}

@Override

public String getDescription() {

return "向右转";

}

}, // 注意这里的枚举值分隔使用,

SHOOT {

public String getString() {

return "射击";

}

@Override

public String getDescription() {

return "射击";

}

}; // 注意这里的枚举值结束使用;

}

public static void main(String[] args) {

// 枚举类型是一种类型,用于定义变量,以限制变量的赋值

ColorSelect m = ColorSelect.blue;

switch (m) {

// 枚举变量的值是不带前缀的所以为blue而非ColorSelect.blue

case red:

System.out.println("color is red");

break;

case green:

System.out.println("color is green");

break;

}

// 通过values()获得枚举值的数组

for (ColorSelect c : ColorSelect.values()) {

}

// ordinal()返回枚举值在枚举中的索引位置,从0开始

System.out.println(ColorSelect.red.ordinal());// 0

System.out.println(ColorSelect.green.ordinal());// 1

// 枚举默认实现了java.lang.Comparable接口

System.out.println(ColorSelect.red.compareTo(ColorSelect.green));

System.out.println(Season.getBest());

for (Temp t : Temp.values()) {

// 通过getValue()取得相关枚举的值

System.out.println(t + "的值是" + t.getValue());

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值