浅谈 泛型_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 浅谈 泛型

浅谈 泛型

 2011/11/22 9:23:20  wzy865100  http://wzy865100.iteye.com  我要评论(0)
  • 摘要:浅谈枚举----------------------android培训、java培训、期待与您交流!----------------------1.枚举:枚举就是让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错,枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标2.基本的枚举特性protectedObjectclone()抛出CloneNotSupportedException。intcompareTo(Eo
  • 标签:浅谈 泛型
浅谈枚举
---------------------- android培训、java培训、期待与您交流! ----------------------
1.枚举:
        枚举就是让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错,枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标

2.基本的枚举特性

protected Object clone()      抛出 CloneNotSupportedException。 
int compareTo(E o)            比较此枚举与指定对象的顺序。
boolean equals(Object other)  当指定对象等于此枚举常量时,返回 true。
protected void finalize()     枚举类不能有 finalize 方法。
Class<E> getDeclaringClass()  返回与此枚举常量的枚举类型相对应的 Class 对象。
int hashCode()                返回枚举常量的哈希码。
String name()                 返回此枚举常量的名称,在其枚举声明中对其进行声明。
int ordinal()                 返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
String toString()             返回枚举常量的名称,它包含在声明中。
static <T extends Enum<T>> T
valueOf(Class<T> enumType, String name) 返回带指定名称的指定枚举类型的枚举常量。
-----------------------------------------------
enum WeekDay 
{
    SUN,MON,TUES;
}

class EnumDemo 
{
    public static void main(String[] args) 
    {
        for(WeekDay wd : WeekDay.values())
        {
            System.out.println();
            System.out.println(wd + " 与MON的顺序: " + wd.compareTo(WeekDay.MON));
            System.out.println(wd + " 与MON是否相等: " + wd.equals(WeekDay.MON));
            System.out.println(wd + " 相对应的 Class 对象: " + wd.getDeclaringClass());
            System.out.println(wd + " 的hasCode: " + wd.hashCode());
            System.out.println(wd + " 的名称" + wd.name());
            System.out.println(wd + " 在枚举中的位置" + wd.ordinal());
            System.out.println("返回带指定名称的指定枚举类型的枚举常量: " +              
                    Enum.valueOf(WeekDay.class,"MON"));
            System.out.println("--------------------------");
            System.out.println("--------------------------");

        }
    }
}
----------------------------------------------------
/*结果
SUN 与MON的顺序: -1 
SUN 与MON是否相等: false
SUN 相对应的 Class 对象: class WeekDay
SUN 的hasCode: 1414159026
SUN 的名称SUN
SUN 在枚举中的位置0
返回带指定名称的指定枚举类型的枚举常量: MON
--------------------------
--------------------------

MON 与MON的顺序: 0
MON 与MON是否相等: true
MON 相对应的 Class 对象: class WeekDay
MON 的hasCode: 1794515827
MON 的名称MON
MON 在枚举中的位置1
返回带指定名称的指定枚举类型的枚举常量: MON
--------------------------
--------------------------

TUES 与MON的顺序: 1
TUES 与MON是否相等: false
TUES 相对应的 Class 对象: class WeekDay
TUES 的hasCode: 1167165921
TUES 的名称TUES
TUES 在枚举中的位置2
返回带指定名称的指定枚举类型的枚举常量: MON
--------------------------
--------------------------
*/

---------------------------------

3.在ENUM中添加方法
一般来说,我们希望每个枚举实例能够返回自身的描述,而不是仅仅只是默认的toString(),
因此我们添加一个方法,返回描述的值
---------------------------------
class SexDemo  
{
    public static void main(String[] args) 
    {
        for(Sex s : Sex.values())
        {
            System.out.println(s.getSex());
        }
    }
}
enum Sex
{
    BOY("男"),GIRL("女");
    String sexName;
    private Sex(String sexName){this.sexName = sexName;}
    public String getSex(){return sexName;}
}
/*结果:
男
女
*/
-----------------------------------

4.switch语句中的enum
在switch中使用enum,是enum提供的一项非常便利的功能,因为通过ordinal()方法可以取得其次序,
因此我们可以在switch语句中使用enum。

-----------------------------------
class TrafficLight  
{
    Signal color = Signal.RED;
    public void change()
    {
        switch(color)
        {
            case RED: color = Signal.GREEN;
                      break;
            case GREEN: color = Signal.YELLOW;
                        break;
            case YELLOW: color = Signal.RED;
                        break;
        }
    }

    public static void main(String[] args) 
    {
        TrafficLight t = new TrafficLight();
        for(int i = 0;i < 5;i++)
        {
            System.out.println(t.color.getLight());
            t.change();
        }
    }
}
enum Signal
{
    GREEN("绿"),YELLOW("黄"),RED("红");
    private String light;
    private Signal(String light){this.light = light;}
    public String getLight(){return light;}

}
/*结果
红 
绿
黄
红
绿
*/
------------------------------------------

5.在enmu中调用内部类

public class EnumTest { 

    public static void main(String[] args) {
    }


    public enum TrafficLamp{
        RED(30){

            @Override
            public TrafficLamp nextLamp() {
                // TODO Auto-generated method stub
                return TrafficLamp.GERRN;
            }

        },
        GERRN(45){

            @Override
            public TrafficLamp nextLamp() {
                // TODO Auto-generated method stub
                return TrafficLamp.RED;
            }

        },
        YELLOW(5){

            @Override
            public TrafficLamp nextLamp() {
                // TODO Auto-generated method stub
                return TrafficLamp.YELLOW;
            }

        };
        private int time;
        private TrafficLamp(int time) {
            this.time = time;
        }
        public abstract TrafficLamp nextLamp();
    }    
}


---------------------- android培训、java培训、期待与您交流! ---------------------- 详细请查看:http://edu.csdn.net/heima
发表评论
用户名: 匿名