001-SE-0005-泛型

泛型
	泛型类:
		定义:类名后<变量>  如:class A<E> {使用E完成类的定义}
		使用:创建对象时使用具体类型替换E
		举例:
			//定义泛型类
			public class ObjectTool<E> {
				private E obj;
				public E getObj() {
					return obj;
				}
				public void setObj(E obj) {
					this.obj = obj;
				}
			}
			//使用测试
			public class MyTest {
				public static void main(String[] args) {
					ObjectTool<String> tool = new ObjectTool<String>();
					tool.setObj("刘亦菲");
					System.out.println(tool.getObj());
				}
			}


	泛型方法:
		定义:方法返回值前<变量> 如:public <T> void method(){使用T}
		使用:调用方法时确定类型
		举例:
			//定义类,其中有一个泛型方法
			public class ObjectTool {
				public <T> void show(T t){
					System.out.println(t);
				}
			}
			//使用测试
			public class MyTest {
				public static void main(String[] args) {
					ObjectTool tool = new ObjectTool();
					tool.show(1);
					tool.show("字符串");
				}
			}

	泛型接口:
		定义:接口后<变量> 如: interface B<T>{使用T完成接口定义}
		使用:
			public interface ObjectTool<E> {
				void show(E e);
			}
			//1、定义类时确定类型
			public class ObjectToolImpl<E> implements ObjectTool<E> {
				@Override
				public void show(E e) {
					System.out.println(e);
				}
			}
			public class MyTest {
				public static void main(String[] args) {
					ObjectToolImpl<String> tool = new ObjectToolImpl<String>();
					tool.show("字符串");
				}
			}
			//2、始终不确定类型,直到创建对象时确定类型
			public class ObjectToolImpl implements ObjectTool<Integer> {
				@Override
				public void show(Integer e) {
					System.out.println(e);
				}
			}
			public class MyTest {
				public static void main(String[] args) {
					ObjectToolImpl tool = new ObjectToolImpl();
					tool.show(1);
				}
			}
	泛型通配符:
		<?>				表示任意泛型
		使用举例:
			ArrayList<?> list1 = new ArrayList<Animal>();
			ArrayList<?> list2 = new ArrayList<Dog>();
			ArrayList<?> list3 = new ArrayList<Cat>();

		<? extends E> 	表示泛型是E及其子类
			ArrayList<? extends Animal> list1 = new ArrayList<Animal>();
			ArrayList<? extends Animal> list2 = new ArrayList<Dog>();
			ArrayList<? extends Animal> list3 = new ArrayList<Cat>();

		<? super E>  	表示泛型是E及其父类
			ArrayList<? super Cat> list1 = new ArrayList<Animal>();
			ArrayList<? super Dog> list2 = new ArrayList<Dog>();
			ArrayList<? super Cat> list3 = new ArrayList<Cat>();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值