Java中的枚举和泛型复习

1 枚举

JDK 1.5加入了枚举类型,可以使用该功能取代以往定义常量的方式,同时枚举类型还赋予程序在编译时检查类型的功能。在以往设置常量时,通常将常量放置在接口中,这样在程序中就可以直接使用,并且该常量不能被修改,因为在接口中定义常量时,该常量的修饰符为static和final。而使用枚举类型定义和使用常量的程序示例如下。
package captain;

//枚举类型定义和使用常量的演示。
public class EnumDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		doit(Constants.Constants_A);
		doit2(Constants2.Constants_A);
		doit(3);//编译器不会报错
		//doit2(3);//编译器会报错
	}
	
	enum Constants2{//将常量放置在枚举类型中
		Constants_A, Constants_B
	}
	
	public static void doit(int c){
		switch(c){
		case Constants.Constants_A:
			System.out.println("doit() Constants_A");
			break;
		case Constants.Constants_B:
			System.out.println("doit() Constants_B");
			break;
		}
	}
	
	public static void doit2(Constants2 c){
		switch(c){
		case Constants_A:
			System.out.println("doit2() Constants_A");
			break;
		case Constants_B:
			System.out.println("doit2() Constants_B");
			break;
		}
	}

}

interface Constants{//将常量放置在接口中
	public static final int Constants_A = 1;
	public static final int Constants_B = 10;
}

2 泛型

JDK 1.5加入了泛型机制,泛型的好处是 将运行时期的问题ClassCastException提前到了编译时的安全检查; 避免了强制类型转换。在出现泛型之前,Java也提供了对Object的引用“任意化”操作,这种任意化操作就是对Object引用进行“向上转型”和“向下转型”操作,但某些强制类型转换错误也许不会被编译器捕捉,而在运行后出现异常,可见强制类型转换存在安全隐患,所以在此提供了泛型机制。
泛型类程序示例:
package captain;

//泛型类的使用
public class GenericDemo<T> {

	private T t;
	
	public T get(){
		return t;
	}
	public void set(T t){
		this.t = t;
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		GenericDemo<Boolean> t1 = new GenericDemo<Boolean>();//基本类型需要用其包装类。
		GenericDemo<Float> t2 = new GenericDemo<Float>();//基本类型需要用其包装类。
		
		t1.set(true);
		t2.set(1.1f);
		
		Boolean b = t1.get();
		Float f = t2.get();
		
		System.out.println(b);
		System.out.println(f);
	}

}
另:泛型通配符?的使用。泛型上限定? extends AnyClass,多用于对象存储时;泛型下限定? super AnyClass,多用于对象获取时。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值