1. 泛型

引入:

在需要使用一种不确定的数据时,可以使用泛型。

例如,需要一个函数可以分别打印int数组和double数组,使用方法重载会存在代码复制,这时就可以使用泛型,来表示不同的数据类型。

使用规则:

  • public static <E> void f(),在返回类型之前
  • public static <E,F,G> void f(),使用逗号隔开
  • public static <E> E f(),返回值也可以为泛型
  • 类型参数只能使用引用类型,不是原始类型(char,int,double等)

public static <E,F> F f(E e),代表两个泛型E和F,返回值为F类型,传入参数为E类型。

有四点

  1. 泛型方法,返回值之前
  2. 泛型类/接口,类名之后
  3. 泛型限制类型
public class Demo {
    public static void main(String[] args) {
        Plate<Apple> p1 = new Plate<Apple>();  //正常
//      Plate<Apple> p2 = new Plate<Fruit>();   两个都是Plate不存在继承关系
        //解决办法
        Plate<? super Apple> p3 = new Plate<Fruit>();  //表示上界是Apple
    }
}
class Fruit{}
class Apple extends Fruit{}
class Plate<T>{}
  1. 通配符

< ? > 可以传任意类型数据的一种,表示任意数据类型

上界:<? extends A>

下界:<? super B>

注意:

泛型只存在于编译阶段,在运行阶段是已有的数据类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值