java泛型接口详解

/*
 * 泛型接口
 */
interface Tool<T> {
	public void show(T t);
	
	//泛型方法
	public <E> void print(E e);
}

/*
 * 这种方式适合实现接口的时候就知道类里的泛型是什么
 */
class ToolImpl implements Tool<String> {

	@Override
	public void show(String t) {
		System.out.println("show:" + t);
	}

	@Override
	public <E> void print(E e) {
		System.out.println("print:" + e);
	}

}

/*
 * 这种方式不好!
 */
class Tool2Impl implements Tool {

	@Override
	public void show(Object t) {
		System.out.println("show obj" + t);
	}

	@Override
	public void print(Object e) {
		System.out.println("show obj" + e);
	}

}

/*
 * 这种方式适合使用的时候指定泛型 
 * 在继承接口的时候不用指定泛型 
 * 注意的是<T>也可以写成别的比如<C> 
 * 写成<E>的话,类上的<E>和print方法
 * 上的<E>也不是一个类型
 */
class Tool3Impl<T> implements Tool<T> {

	@Override
	public void show(T t) {
		System.out.println("show=" + t);
	}

	@Override
	public <E> void print(E e) {
		System.out.println("print=" + e);
	}

}

/*
 * 这个写法中show方法和print方法用的泛型也不是一个 
 * 类上的<E>和print方法上的<E>不是一个类型!!!
 */
class Tool4Impl<E> implements Tool<E> {

	@Override
	public void show(E t) {
		System.out.println("show-" + t);
	}

	@Override
	public <E> void print(E e) {
		System.out.println("print-" + e);
	}

}

/*
 * 错误!
 * class Tool5Impl<String> implements Tool<T> {
 * 
 * }
 */
/*
 * 正确,但是这个泛型上的String没意义,和Tool3Impl写法没区别 
 * class Tool5Impl<String, T> implements Tool<T> {
 * 
 * }
 */
/*
 * 错误1 
 * class Tool5Impl<String|T> implements Tool<E> {
 * 
 * }
 */
/*
 * 正确,但是这个泛型上的String|T没意义,和Tool4Impl写法没区别 
 * class Tool6Impl<String|T, E> implements Tool<E> {
 * 
 * }
 */
public class GenericDemo {

	public static void main(String[] args) {
		ToolImpl ti = new ToolImpl();
		ti.show("nihao");
		ti.print(6);
		Tool3Impl<String> t3i = new Tool3Impl<String>();
		t3i.show("haha");
		t3i.print(6);
		Tool4Impl<String> t4i = new Tool4Impl<String>();
		t4i.show("hehe");
		t4i.print(6);
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值