首页 > 代码库 > 枚举和泛型
枚举和泛型
1、枚举类型
JDK1.5中新增了枚举类型与泛型。
枚举类型可以取代以往常量的定义方式,即将常量封装在类或接口中,此外,它还提供了安全检查功能。
枚举类型本质上还是以类的形式存在。
enum是定义枚举类型的关键字。
例如:在项目中创建Constants接口,在接口中定义敞亮的常规方式:
public interface Constants{ public static final int Constants_A=1; public static final int Constants_B=12; }
新增枚举类型后就逐渐取代了这种常量定义方式,使用枚举类型定义常量的语法如下:
public enum Constants{ Constants_A, Constants_B, Constants_C }
2、泛型
(1)泛型实质上就是使程序员定义安全的类型。
在没有出现泛型之前,Java也提供了对Object的引用“任意化”操作,这种任意化操作就是对Object引用进行“向下转型”及“向上转型”操作,但某些强制类型转换的错误也许不会被编译器捕捉,而在运行后出现异常,可见强制类型转换存在安全隐患,所以再次提供了泛型机制。
例如:在项目中创建Test类,在该类中使基本类型向上转型为Object类型:
public class Test { private Object b; // 定义Object类型成员变量 public Object getB() { // 设置相应getXXX()方法 return b; } public void setB(Object b) { // 设置相应setXXX()方法 this.b = b; } public static void main(String[] args) { Test t = new Test(); t.setB(new Boolean(true)); // 向上转型操作 System.out.println(t.getB()); t.setB(new Float(12.3));
Float f = (Float) (t.getB()); // 向下转型操作 System.out.println(f); } }
在本实例中,Test类中定义了私有的成员变量b,它的类型为Object类型,同时为其定义了相应的setXXX()与getXXX()方法,
在类的主方法中,将new Boolean(true)对象作为setB()方法的参数,由于setB()方法的参数类型为Object,这样就实现了“向上转型”操作;
同时在调用getB()方法时,将getB()方法返回的Object对象以相应的类型(这里是Float)返回,这个就是“向下转型”操作。
因为“向上转型”是安全的,而如果进行”向下转型“操作时用错了类型,或者并没有执行该操作,就会出现ClassCastException异常。
(2)定义泛型类
泛型机制的语法如下:
类名<public class OverClass<T> { //定 private T over; // 定义泛型成员变量
public T getOver() { // 设置相应getXXX()方法 return b; } public void setOver(T over) { // 设置相应setXXX()方法 this.b = b; } public static void main(String[] args) { //实例化一个Boolean型的对象
OverClass<Boolean> over1=new OverClass<Boolean>();
//实例化一个Float型对象
OverClass<Float> over2=new OverClass<Float>();
over1.setOver(true); //不需要类型转换 over2.setOver(12.3f);
Boolean b=over1.getOver(); //不需要类型转换
Float f=over2.getOver();
System.out.println(b); System.out.println(f); } }
枚举和泛型