JavaDay18:泛型

泛型

什么是泛型

​ 类型参数化

  • 在类后面,用<>括起来
  • 泛型名称随意,一般用大写的一个字母表示
  • 可以定义多个泛型,多个泛型之间用,隔开
public class Box<E> {
	
	private Object [] elementData; 
	
	private int size;
	
	public  Box(){
		elementData = new Object[100];
	}
	
	public void add(E e){
		elementData[size++] = e ;
	}
	
	public void show(){
		for (Object object : elementData) {
			if(object != null){
				System.out.println(object);
			}
			
		}
	}
	
	
	

}
Box<String> b = new Box<String>();
		b.add("a");
		b.add("b");
		b.show();
		
		Box<Integer> b1 = new Box<Integer>();
		b1.add(1);
		b1.add(2);
		b1.show();

泛型的分类

  • 泛型类
  • 泛型方法
  • 泛型接口

泛型类

​ 泛型定义在类上

  • 泛型是编译期间,编译之后,泛型会被擦除
  • 静态的方法不能使用类上的泛型
public static void main(String[] args) {
		
//		泛型是编译期间,编译之后,泛型会被擦除
		Box<Integer> b = new Box<Integer>();
		b.add(1); 
		Box<String> b1 = new Box<String>();
		b1.add("1"); 
//		添加一个数字1  ,反射
		
//		通配符
		
//		method2(b);
//		method2(b1);
	}
	
//	?表示任意类型
	public static void method(Box<?> box){
		box.show();
	}
	
//	extends 定义泛型的上限
	public static void method1(Box<? extends Integer > box){
		box.show();
	}
	
	public static void method2(Box<? super String > box){
		box.show();
	}

泛型方法

泛型方法:泛型的定义在方法上

//	泛型方法:泛型的定义在方法上。泛型方法必须先声明跟定义
	public static <T> void method(T t){
		System.out.println(t);
	}
	
//	返回类型是泛型T,它由调用接收的类型来确定      
//	静态的方法不能使用类上的泛型
	public static <T> T method2(){
		return  (T) "123";
	}

泛型接口

  • 直接确定接口泛型的类型

  • 不确定,继续定义泛型类

    public interface DemoInterface<E> {
    	
    	public void method(E e);
    
    }
    
    /*
     * 实现泛型接口:
     * 	1,直接确定接口泛型的类型
     * 	2,不确定,继续定义泛型类
     */
    public class Hello<E> implements DemoInterface<E>{
    
    	@Override
    	public void method(E e) {
    			System.out.println("----method----");
    	}
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值