java学习----泛型
目录
一、泛型的定义
泛型是
定义:所谓泛型就是允许在定义类、接口和方法使用参数类型这个类型形参可以在声明变量、
创建对象、调用方法时动态指定(类型实参)泛型的参数类型只能是引用类型,不能是基本类型
二、泛型的使用
泛型接口格式:
修饰符
泛型接口
public interface Action<E> { //在接口中使用泛型E E getE(); //在接口中使用泛型抽象方法 <T> T getT(int i); }
泛型类格式:
修饰符
使用
泛型类
//类上声明泛型E public class ActionImpl<E>{ //声明E类型变量 private E e; //使用E类型 public E getE() { // TODO Auto-generated method stub return e; } public ActionImpl(E e){ this.e = e ; } }
泛型方法格式:
修饰符
使用
泛型方法
public class GenericWay { //方法上声明泛型T类型 public static <T> T get(T t){ return t; } }
三、泛型通配符
泛型通配符的符号是?
普通的泛型与泛型通配符的泛型
Class<T> :在实例化的时候,
在泛型类、方法中可以使用
泛型通配符可以匹配任意类型。
泛型通配符
import java.util.ArrayList; import java.util.List; public class GWC { //参数是list,list里的类型可以是任意类型 public void forList(List<?> l){ for (Object object : l) { System.out.println(object); } } public static void main(String[] args) { GWC gwc = new GWC(); List<Integer> l1 = new ArrayList<>(); l1.add(1); l1.add(2); gwc.forList(l1); List<String> l2 = new ArrayList<>(); l2.add("1"); l2.add("2"); gwc.forList(l2); } }
通配符上限
举个栗子:
通配符上限
import java.util.ArrayList; import java.util.List; public class GWCTop { public void forList(List<? extends Number> l){ for (Number number : l) { System.out.println(number); } } public static void main(String[] args) { GWCTop gwcTop = new GWCTop(); //Object 类型是number类型的父类编译报错; //List<Object> list = new ArrayList<>(); //String 类型不是number编译器报错; //List<String> list = new ArrayList<>(); List<Number> list = new ArrayList<>(); gwcTop.forList(list); } }
通配符下限
举个栗子:
通配符下限
import java.util.ArrayList; import java.util.List; public class GWCUnder { public void forList(List<? super Number> l){ for (Object object : l) { System.out.println(object); } } public static void main(String[] args) { GWCUnder gwcUnder = new GWCUnder(); //Integer 类型是Number类型的父类,编译不通过; //List<Integer> list = new ArrayList<>(); //String 类型不是Number类型的父类,编译不通过; //List<String> list = new ArrayList<>(); List<Object> list = new ArrayList<>(); gwcUnder.forList(list); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!