泛型

泛型

一:泛型的概述

1.1:泛型是什么

泛型就是一个未知类型的数据类型。比如集合类的定义的时候是ArrayList<E>,所以结合中能存任意类型的引用数据类型。<E>:就是一个泛型。

1.2:泛型的好处

a;能将运行异常提前到编译期。
b:确定类型能够省略强转。

1.3:泛型的擦除

java中的泛型是伪泛型,在编译的时候有效,运行的时候无效。

二:泛型的用法

2.1:泛型接口

a:定义格式:
public interface MyInterface<T> {   
	 //泛型作为参数
    void method1(T t);
    
    //泛型作为返回值类型
    T method2();
    
    //泛型作为参数和返回值类型
    T method3(T t);
}


b:泛型类型确定时期:

			//当一个实现类实现该接口时直接确定类型
		public class MyInterfaceImpl1 implements MyInterface<String>{
		    @Override
		    public void method1(String s) {
		    }
		
		    @Override
		    public String method2() {
		        return null;
		    }
		
		    @Override
		    public String method3(String s) {
		        return null;
		    }
		}
		
		//实现类实现该接口时不确定类型,而是创建该实现类对象时才确定
		public class MyInterfaceImpl2<T> implements MyInterface<T>{
		    @Override
		    public void method1(T t) {
		
		    }
		
		    @Override
		    public T method2() {
		        return null;
		    }
		
		    @Override
		    public T method3(T t) {
		        return null;
		    }
		}

2.2:泛型类

定义格式:
	public class Factory<E> {
		public <E> T fixAll(E e) {
		        System.out.println("修理了任意物品");
		        return e;
		 }
	}
泛型类型确定时期:
	在创建对象的时候,比如:ArrayList<String> list = new ArrayList();

2.3:泛型方法

代码:
	public class Factory<E> {
	
		public E fix(T o) {
	        System.out.println("修理了物品");
	        return o;
	    }
	}
确定泛型的时候:
	在方法的调用时候。

三:泛型的通配符

3.1:通配符的使用

实例:
 ArrayList<Person> people = new ArrayList<>();
  printArrayList(people);
  
  ArrayList<Student> students = new ArrayList<>();
  printArrayList(students);

	//?不能用T来替换。因为没有这种泛型得定义格式。编译通不过。
private static void printArrayList(ArrayList<?> students) {
	        for (Object student : students) {
	            System.out.println(student);
	        }
}
	 
解释:
	能够装任意类型的泛型。

3.2:通配符的上下限

 格式:
    <? extends B> :泛型的类型只能是B类型或者B类型的子类;上限
    <? super B> :  泛型的类型只能是B类型或者B类型的父类;下限
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值