泛型

​ 泛型,其实是一种自定义的数据类型。可以在类、接口、方法中,定义泛型,泛型在定义时并不明确,只有在使用泛型类,泛型接口和泛型方法时,才会明确类型,类似于参数的传递。

1. 泛型在类中的应用
  1. 泛型定义的位置

    public class ArrayList<E>{}
    public class HashMap<E,T>{}
    
  2. 泛型的实现位置

    //jdk1.7的新特性,菱形泛型
    ArrayList<String> arrayList=new ArrayList<>{}
    
  3. 泛型不能被继承,只能在当前类中使用

    public class Student extends Person<String>{}
    //在子类定义一个泛型T,用这个类型给父类的泛型设置类型
    public class Driver<T> extends Pserson<T>{}
    
  4. 在使用泛型类时,如果没有显示的设置泛型类型,则默认为Object类型

2. 泛型在接口中的应用

3. 泛型方法的使用
//定义在返回值前,并且必须在参数中有体现,不然这个泛型没有意义
public <E> void show(E[] e){
    
} 
4. 泛型限定
?				:通配,表示可以是任何类型的
? super Dag 	:可以是Dog类型,或者Dog类型的子类
? extends Dog	:可以是Dog类或者Dog类的父类
5. 实现泛型数组

当你想要直接new一个泛型数组时,很抱歉你将得到一个:Type parameter ‘E’ cannot be instantiated directly**(类型参数“ E”不能直接实例化)**

但是,别担心,会有办法的,我们可以通过java.lang.reflect.Array类的newInstance方法得到

public E[] toArray(E[] component){
    E[] eArray=(E[]) java.lang.reflect.Array.newInstance
    (comonent.getClass().getComponentType(),component.length);
    ...
    return eArray;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值