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();
}
}
//运行结果为
// 性别是:男