泛型方法和泛型参数

  1. 最早接触泛型应该是在Java各种容器上面,这样写的好处是避免取值时类型转换出错的可能性,而且指定泛型后get也不需要手动强转。
List<Integer> list = new ArrayList<Integer>();
  1. 类或接口上泛型
    在继承或实现类或接口时,指定泛型的类型,重载的方法会替换相应的参数类型,泛型不一定是T,其他字母也可以,不过约定俗成:
    ? 表示不确定的java类型。
    T 表示java类型。
    K, V 分别代表java键值中的Key Value。
    E 代表Element。
public interface Test<T> {
    T aaa(T t);
}

public class Demo implements Test<Integer> {
    @Override
    public Integer aaa(Integer t) {
        // TODO Auto-generated method stub
        return null;
    }
}

3.1方法的泛型和类的泛型没有必然的联系,也就是即使不是泛型类,也可以声明泛型方法
<E>是指该方法为泛型的方法(这里用的是E,为了下面泛型类区别),和返回值没有关系,实现类Demo的方法aaa的入参由调用者决定,但是返回值是int

public interface Test {
    <E> int aaa(E e);
}

public class Demo implements Test {
    @Override
    public <E> int aaa(E e) {
        return 0;
    }
}

3.2 那么当泛型类和泛型方法一起出现的时候,泛型T被实现类指定的泛型类型所替换,而参数e是由调用者决定的,当然如果想要返回类型由参数决定,也可以将Integer更改为E

public interface Test<T> {
    <E> T aaa(E e, T t);
}


public class Demo implements Test<Integer> {
    @Override
    public <E> Integer aaa(E e, Integer t) {
        return null;
    }   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值