自定义泛型接口

基本语法

interface 接口名 <T,R...> { }

注意细节

  1. 接口中,静态成员也不能使用泛型 (这个和泛型类规定一样)
  2. 泛型接口的类型,在继承接口或者实现接口时确定
  3. 没有指定类型,默认为Object 类

举例说明

public class Exercise06 {
    public static void main(String[] args) {

    }
}
interface IUsb<U,R>{
    int n = 10;
    //U name; 不能这样使用
    //普通方法中,可以使用接口泛型
    R get(U u);
    void hi(R r);
    void run(R r1,R r2,U u1,U u2);
    //在jdk8中,可以在接口中,使用默认方法
    default R method(U u){
        return null;
    }
}

//在继承接口,指定泛型接口的类型
interface IA extends IUsb<String,Double> {

}
// 当我们去实现 IA 接口时,因为 IA 在继承 IUsu 接口时,指定了 U为String,R为Double
// 所以在实现 IUsu 接口的方法时,使用String 替换U,使用Double 替换R
class AA implements IA {

    @Override
    public Double get(String s) {
        return null;
    }

    @Override
    public void hi(Double aDouble) {

    }

    @Override
    public void run(Double r1, Double r2, String u1, String u2) {

    }
}

//实现接口时,直接指定泛型接口的类型
//给U指定Integer,给R指定Float
//所以,当我们实现IUsb方法时,会使用Integer替换U,Float替换R
class BB implements IUsb<Integer,Float> {

    @Override
    public Float get(Integer integer) {
        return null;
    }

    @Override
    public void hi(Float aFloat) {

    }

    @Override
    public void run(Float r1, Float r2, Integer u1, Integer u2) {

    }
}

//没有指定类型,默认为Object
class CC implements IUsb { //等价 class CC implements IUsb<Object,Object>
    @Override
    public Object get(Object o) {
        return null;
    }

    @Override
    public void hi(Object o) {

    }

    @Override
    public void run(Object r1, Object r2, Object u1, Object u2) {

    } //等价 class CC implements IUsb<Object,Object>
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值