Java泛型

张春  金牌会员 | 2022-8-23 09:30:07 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 826|帖子 826|积分 2478

目录

概述

​                泛型可以把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型 。
​                相当于把数据类型作为参数来进行传递。
​                注意:泛型只能是引用数据类型。
使用

泛型类&泛型接口

​                 泛型类和泛型接口的用都相同,本篇以泛型类为例进行讲解。
​                泛型类就是把泛型定义在类上,用户使用该类的时候,才把类型明确下来 。
定义泛型

​        在类名后加,在中定义泛型,中的内容相当于泛型的名字,可以随便写。在泛型类中我们可以把这个泛型的名字当做一个数据类型来使用。
  1. public class TestClass<T> {
  2.     //...
  3. }
复制代码
使用泛型

​        在泛型类中可以使用在类名后面定义的泛型。
  1. public class TestClass<T> {
  2.     public void test(T t){
  3.       
  4.     }
  5. }
复制代码
泛型的确定

①创建对象时确定
​                在创建泛型类对象的时候确定之前定义的泛型代表什么数据类型。在定义泛型类对象的时候,在类名的后加,在其中写一个具体的数据类型。
  1.     public static void main(String[] args) {
  2.         TestClass<String>  t = new TestClass();//指定了该对象的泛型T是String类型
  3.         t.test("愚生浅末");//所以test方法的参数类型应该也是String类型
  4.     }
复制代码
完整示例:
  1. public class Test <E>{
  2.     public void test(E e){
  3.         System.out.println(e);
  4.     }
  5.     public static void main(String[] args) {
  6.         Test<String> e = new Test();
  7.         e.test("愚生浅末");
  8.     }
  9. }
复制代码
②定义子类时确定
​                在定义子类的时候可以确定泛型。具体用法如下:
  1. public class SubClass extends TestClass<String> {
  2.     @Override
  3.     public void test(String s) {
  4.         
  5.     }
  6. }
复制代码
​                这样在子类SubClass中泛型就确定为String类型了。
注意:我们在定义子类时也可以选择不确定泛型,让其在创建对象的时候在确定。写法如下
  1. public class SubClass<T> extends TestClass<T> {
  2.     @Override
  3.     public void test(T t) {
  4.         super.test(t);
  5.     }
  6. }
复制代码
泛型方法

定义泛型

​                在方法返回值类型的前面加,在中定义泛型,中的内容相当于泛型的名字,可以随便写。在该泛型方法中我们可以把这个泛型的名字当做一个数据类型来使用。
  1.     public static  <T> T test(T t){
  2.         return t;
  3.     }
复制代码
使用泛型

​                在泛型方法中可以使用定义的泛型。并且我们一般是在参数列表中或者是返回值类型上使用到这个泛型。
  1.     public static  <T> T test(T t){
  2.         return t;
  3.     }
复制代码
泛型的确定

​                在调用泛型方法的时候才真正确定之前定义的泛型代表什么数据类型。在调用泛型方法的时候,程序会根据你的调用自动推导泛型的具体类型。
  1.     public static void main(String[] args) {
  2.         Integer test = test(1);
  3.         String s = test("愚生浅末");
  4.     }
复制代码
泛型上限&泛型下限

泛型限定的概念

​        我们在使用确定泛型的时候可以使用任意的引用数据类型去确定。但是在某些场景下我们要求这个泛型必须是某个类的子类或者是某个类的父类。这种情况下我们就需要用到泛型上限和泛型上限来限制泛型的范围。
泛型上限

​        限制泛型必须是某个类或者是其子类。
格式:
[code]
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张春

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表