泛型、自定义泛型、泛型类、泛型接口、泛型上下限

泛型

泛型就是 ArrayList**<>** list = new ArrayList**<>** () 中的类型限制

泛型的好处:

1、将运行时的问题提前至编译处;

2、泛型是JDK1.5使用的新特性;

泛型在集合中的常见应用:

ArrayList**** list = new ArrayList**** () ; // true

ArrayList**** list = new ArrayList**** () ; // false

ArrayList**** list = new ArrayList**** () ; // false

ArrayList**** list = new ArrayList () ; // true

ArrayList list = new ArrayList**** () ; // true

注意:泛型没有多态的概念,左右两边的数据类型必须要一致,或者只是写一边的泛型类型。

推荐使用:两边都写泛型。

自定义泛型

定义一个方法可以接受任意类型的参数,而且返回值类型必须要与实参的类型一致:

public class Demo{
    public  static void main (String[] args) {
        String str = getData("abc"); // 注意不能使用基本数据类型,如果需要使用的话需要使用基本数据类型的包装类型。
    }
    
    public static <T>T getData(T o){ //T是自定义的一个变量,用来占位,表示我不知道这是个什么类型
        return o
    }
    
}

自定义泛型就是一个数据类型的占位符或者是一个数据类型的变量。

方法上自定义泛型:

修饰符 <声明自定义的泛型> 返回值类型 函数名 (使用自定义泛型…) {

}

在泛型中不能使用基本数据类型,如果需要使用基本数据类型,那么就是用基本数据类型对应的包装类型。

方法泛型注意的事项:

1、在方法上自定义泛型,这个自定义泛型的具体数据类型是在调用该方法的时候传入实参时确定具体的数据类型的。

2、自定义泛型只要符合标识符的命名规则即可。但是自定义泛型使用一般都习惯使用一个大写字母表示。T 、E

泛型类

泛型类的定义格式:

class 类名<声明自定义泛型> {

}

泛型类要注意的事项:

1、在类上自定义泛型的具体数据类型是在使用该类的时候创建对象的时候确定的。

2、如果一个类在类上已经声明了自定义泛型,如果使用该类创建对象的时候没有指定泛型的具体数据类型,那么默认为Object类型。

3、在类上自定义的泛型不能作用于静态的方法,如果静态的方法需要使用自定义泛型,那么需要在方法上自己声明使用。

泛型接口

泛型接口的定义格式:

interface类名<声明自定义泛型> {

}

泛型接口要注意的事项:

1、接口上自定义的反省的具体数据类型是在实现一个接口的时候指定的。。

2、在接口上自定义的泛型如果在实现接口的时候没有指定的具体的数据类型,那么默认为Object类型。

需求:目前我实现一个接口的时候,我还不确定我目前要操作的数据类型,我要等待创建接口实现类对象的时候我才能指定泛型的具体数据类型。

如果要延长接口自定义泛型的具体数据类型,那么格式如下:

格式:

public class Demo implements Dao{

}

泛型的上下限

定义一个函数可以接受任意类型的集合对象,要求接收的集合对象只能存储Integer或者是Integer的父类类型数据。

泛型中通配符:?

? super Integer:只能存储Integer或者是Integer父类元素。泛型的下限。

? extends Number:只能存储Number或者是Number类型的子类数据。泛型的上限。

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

// 泛型的上限
public static void getData(Collection<? extends Number> c){ 
    return c;
}

// 泛型的下限
public static void print(Collection<? super Integer> c){ 
    return c;
}

}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值