java泛型 枚举

 泛型 

        在学习集合的时候,我们知道把数据存放到集合中之后,数据就会被提升成Object类型,在取出的时候,取出来的数据依然Object类型,如果要使用对象的特有功能时,特有数据时,就需要向下转型,只要是向下转型,就有可能发生异常。

        在取出集合中元素的时候,由于集合中元素的类型不统一,导致在取出向下转型的时候,可能会发生ClassCastException,这个异常是在运行的时候才发生的。发生这个异常的原因是在给集合中存放对象的时候,由于存储了不同的类型数据,在运行程序过程中,取出时才发生了问题。如果我们能够控制在存放的时候,保证类型统一,那么在取出的时候,就不会发生问题了。

        可以借助数组的思想,把集合在定义的时候,就让类型统一起来,如果在源码中给集合中存放数据的时候,如果类型不一致,就不让当前这个程序编译通过,那么就可以避免运行时期的问题了。

运用:

List<String> list = new ArrayList<String>(); // 这个集合只能存字符串
Map<String ,Object> map= new HashMap<String,Object>(); // mapd的key 只能是字符串 ,
                                                       // value 可以是Obj

工具类collections用于操作集合类,如List,Set,常用方法有:

sort():排序

binarySearch():查找,如果搜索到了,返回位置(从0开始),找不到,返回一个负数

max()\min():查找最大\最小值

枚举

enum 的全称为 enumeration, 是 JDK 1.5  中引入的新特性,存放在 java.lang 包中。

JDK1.5 之前,我们定义常量都是: public static fianl.... 现在有了枚举,可以把相关的常量分组到一个枚举类型里

枚举指由一组固定的常量组成的类型

声明

//声明枚举时必须使用 enum 关键字修饰
Public  enum  enumname{
    enum-body, //一般写常量
}

运用

package oop3;

public enum Enumname {
    男,
    女
}

class Cla{
    private Enumname sex;

    public Enumname getSex() {
        return sex;
    }

    public void setSex(Enumname sex) {
        this.sex = sex;
    }
    public void show(){
        setSex(Enumname.男);    //枚举调用时选项只有自己设置的男和女两个
        System.out.println("性别是:"+getSex());
    }
}




package oop3;

public class Test {
    public static void main(String[] args) {
        Cla c = new Cla();
        c.show();
    }
}


//运行结果为
//            性别是:男