java泛型之三——参数泛型上下限

Java泛型 【返回码】一般是前后端约好的字符串类型,【返回描述】一般就是字符串类型,【返回数据】就不一定了,如果是查询类的请求,返回的数据就是列表信息,可能还包含分页信息;综合以上内容,我们可以总结出泛型的使用场景,便于理解:不管是数据存储还是参数传递,定义的时候,类型并不确定,只有到使用的时候,才知道具体的类型。封装成CopyUtil工具类后,不管是单体复制还是列表复制,都只需要一行代码,省去了大量的重复代码,从而提高开发效率,这里的copy方法和copyList方法,就是泛型方法,在方法的参数中使用了泛型。 阅读详情
class A {
}
class B extends A implements Comparable<B>{
	@Override
	public int compareTo(B o) {
		return 0;
	}
}
class B1 extends B {
}
interface Inf1 {
}
class C implements Inf1 {
}
class D extends A implements Inf1 {
}
class Point<T,M,K> {
	public T x;
	public M y;
	public K k;
}
class Test {
	/**强制要求show1参数Point对象被创建时,指定泛型
	 * T为A类(及其子类);
	 * M为Inf1(及其实现类)
	 * K为B(及其子类)
	 * */
	public void show1(Point<? extends A, ? extends Inf1, ? super B> p) { 
	}
	public static void main(String[] args) {
		Point<A,Inf1,B> p1 = new Point<A,Inf1,B>();
		Point<D,D,A> p2 = new Point<D,D,A>();
		Point<A,B,C> p3 = new Point<A,B,C>();
		Test test = new Test();
		/**对*/
		test.show1(p1);
		/**对*/
		test.show1(p2);
		/**错,应为创建对象p3时,指定的M的泛型为B类,不符合show1函数中强制要
		 *     求的M为Inf1(及其实现类)
		 *     并且指定的C类也不符合show1函数强制要求的K为B(及其父类)
		 *     */
        test.show1(p3);
	}
}
class Dog<F> {
	public F x;
	/**强制要求show1参数Point对象被创建时,指定泛型
	 * T为F及其子类(包括接口)
	 * M为F及其父类(包括接口)
	 * K为F及其子类(包括接口)
	 * */
	public void show1(Point<? extends F, ? super F, ? extends F> p) {
	}
	/**
	 * 强制要求show1参数Point对象被创建时,指定泛型
	 * T为F及其子类(包括接口)
	 * M为F及其父类(包括接口)
	 * K为Comparable的实现类,并且是F及其父类(包括接口),即上限是Comparable,下限是F
	 */
	public void show2(Point<? extends F, ? super F, ? extends Comparable<? super F>>  p) {
	}
	/**
	 * 下面代码中Dog<B>使得F为B类创建对象p时符合:
	 * (1)B1为B的子类——对应T为F及其子类;
	 * (2)A为B及其父类——对应M为F及其父类;
	 * (3)B为Comparable的实现类,并且是B的父类——对应K为Comparable的实现类,并且是F及其父类;
	 * 所以对象p可以使用show2函数的参数
	 */
	public static void main(String[] args) {
		Dog<B> dog = new Dog<B>();
		Point<B1,A, B> p = new Point<B1,A, B>();
		dog.show2(p);
	}
}

STM32开发工具链选型:MDK、CubeIDE、VSCode与IAR深度对比 嵌入式开发工具链是连接软件逻辑与硬件行为的核心枢纽,其选择直接影响代码可靠性、调试效率与量产稳定性。从编译器优化能力、调试协议支持(如ARM CoreSight、SWO)、硬件抽象层级(寄存器/LL/HAL)到跨平台构建能力,不同工具在实时性保障、静态分析合规性(如MISRA-C)、WCET可预测性及生态开放度上存在本质差异。尤其在STM32平台,Keil MDK凭借深度调试能力成为HardFault定位首选,STM32CubeIDE依托图形化配置加速外设初始化,而VSCode+PlatformIO则以LS 阅读详情

相关推荐

Groq LPU架构解析:确定性线性处理器如何重塑AI推理

语言模型推理正从‘通用算力堆叠’转向‘确定性硬件定制’。LPU(Language Processing Unit)作为一种面向大模型推理的领域专用处理器,摒弃传统GPU的并行调度、多级缓存与动态执行范式,转而采用空间计算、静态编译与单线程线性流水线设计,实现纳秒级延迟可控性和92%+的HBM带宽利用率。其核心价值在于将模型结构、内存访问、时序路径全部在编译期固化,从而消除运行时抖动——这正是当前MLOps工程师应对A100显存碎片、vLLM调度开销与P99延迟不稳等痛点的关键技术路径。Groq 3 LPU与

weixin_30599521的博客 327

java implements t_Java泛型——為什么“擴展T”允許而不是“實現T”?

I wonder if there is a special reason in Java for using always "extends" rather than "implements" for defining bounds of typeparameters.我想知道在Java中是否有一個特殊的原因,因為使用總是“擴展”而不是“實現”來定義類型參數的界限。Example:例子:publ...

weixin_28900073的博客 372

如何使用Dify 搭建一个用自然语言查询数据库的 Agent?

这样就会发布完毕。

AI Agent 首席体验官 1699

java implement 泛型_初探Java中的泛型

泛型是一个很有意思也很重要的概念,本篇将简单介绍Java中的泛型特性,主要从以下角度讲解:1.什么是泛型。2.如何使用泛型。3.泛型的好处。1.什么是泛型?泛型,字面意思便是参数化类型,平时所面对的类型一般都是具体的类型,如果String,Integer,Double,而泛型则是把所操作的数据类型当作一个参数。如,ArrayList(),通过传入不同的类型来指定容器中存储的类型,而不用为不同的类型...

weixin_35257663的博客 372

安装并新建windows下wxwroks7.0 bootrom工程

安装licence,将zwrsLicense-vx7-perm.lic粘贴到安装目录C盘WindRiver/license下。现在双击Workbench 4,新建vxworks7.0工程,会出现下面的情况,因为没有licence。编译完成binaries下生成wxwroks x86格式,可以修改bootrom硬件信息的配置了。单击x86_wxwroks工程右键,build project编译工程。双击桌面Workbench 4打开,新建windows下工程。新建完成,选择finish。

wangjie36的博客 1922

OceanBase迁移平台OMS企业版部署

OceanBase迁移平台OMS企业版部署摘要: 本文档详细介绍了OceanBase迁移平台OMS企业版的部署流程,包含环境准备、OAT部署管理、MetaDB部署等关键步骤。

Sebastien23的博客 521

Java泛型——限制可用类型

目录一、限制泛型可用类型二、代码理解 一、限制泛型可用类型 在定义泛型类别时,默认在实例化泛型类的时候可以使用任何类型,但是如果想要限制使用泛型类型时,只能用某个特定类型或者是其子类型才能实例化该类型时,可以在定义类型时,使用extends关键字指定这个类型必须是继承某个类,或者实现某个接口 当没有指定泛型继承的类型或接口时,默认使用extends Objext,所以默认情况下任何类型都可以做为参数传入 二、代码理解 限制类型 class Cls1<T extends String>{ //

小伟的博客 1862

【数字孪生与仿真技术】07:焊装生产线虚拟调试与PLC代码生成全流程实战:从数字孪生到智能优化

摘要:本文系统阐述焊装生产线虚拟调试与PLC代码自动化生成的完整技术体系,结合工业4.0背景下的智能制造需求,构建从离散事件仿真、机器人运动规划到PLC控制逻辑生成的全流程解决方案。通过MATLAB/Simulink平台实现焊装线物流仿真优化,采用遗传算法进行缓冲区容量配置,结合Stateflow状态机设计PLC控制逻辑,并利用PLC Coder生成西门子S7-1500兼容的ST代码。某车企焊装线应用案例显示,虚拟调试技术使调试周期缩短75%,OEE提升13.4%,年节约成本超$420万。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1830

Spring MVC之请求参数绑定

SpringMVC接收:1.基本类型和String类型、2.POJO(VO)类型、POJO(VO)类中包含List、Map、Set集合类型、4.数组类型、5.ServletAPI对象类型等类型参数

积跬步,至千里。 1222

基于自适应小波阈值算法的图像去噪

自适应小波阈值算法是一种基于小波变换的方法,它相对于传统的小波阈值去噪方法具有更好的性能和鲁棒性。该算法首先对图像进行小波变换,然后根据小波系数的大小确定一个自适应的阈值,将小波系数与阈值进行比较,大于阈值的系数被保留,小于阈值的系数被置零。在上述代码中,首先选取了小波函数sym4进行小波分解,然后根据标准差计算出阈值,使用wthresh函数进行阈值处理,最后进行反变换得到处理后的图像。该GUI界面与前面的自适应小波阈值算法代码结合,实现了图像的去噪,并提供了可视化的效果。

与其临渊羡鱼,不如退而结网 559

基于Python的农业市场价格抓取与供需分析:现代爬虫技术与实战应用

在正式开始爬虫开发之前,我们首先了解爬虫的基本概念和工作原理。爬虫(Web Scraping)是通过编程的方式,自动从互联网上获取信息的技术。它可以帮助我们提取HTML页面中的特定数据,通常用于收集并处理大量信息。发送HTTP请求:爬虫需要向目标网站发送请求,获取网站的HTML页面内容。解析HTML页面:通过HTML解析器对获取的页面内容进行解析,提取其中需要的数据。数据清洗与存储:将提取的数据进行清洗,去除多余的字符或无关内容,然后存储到合适的格式(如CSV文件、数据库等)中。数据分析与可视化。

2201_76125261的博客 1117

JAVA泛型 及 可变参数

格式:修饰符 class 类名{ }

m0_57331274的博客 1409

从4A架构的角度出来 帮我分析一下:数字化转型深水区:企业架构如何成为价值重构的核心引擎?

4A 架构的本质是构建企业的数字神经系统,通过业务感知、数据传输、决策执行、技术支撑的闭环,实现从效率提升到生态重构的质变。正如华为通过该架构实现全球研发资源统一调度,某零售集团借此打造线上线下融合的新零售体系,当业务、数据、应用、技术四个维度形成共振时,企业将获得持续进化的数字免疫力,在不确定的市场环境中保持韧性生长。这一过程不仅需要技术工具的升级,更依赖组织文化的变革 —— 从 “部门墙” 到 “能力网” 的转型,才是数字化转型深水区的终极挑战。

金牌架构师 1046

[疯狂Java]泛型:类型参数多态问题、类型通配符(?)、类型通配符的上下限、类型参数的上限(类、接口)

1. 泛型类型参数的多态问题:     1) Java泛型有一个很奇怪的特点:那就是如果A是B的父类,那么泛型类Generic却不是Generic的父类,这就意味着不能把Generic的对象赋给Generic的引用了!! !!和泛型不一样的是数组就不存在这个问题,如果A是B的父类,那么A[]也是B[]的父类,在多态赋值的时候就不存在任何问题;     2) 可是Java的泛型为什么要这样设定

Lirx_Tech的专栏 8213

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

java 泛型 下限_泛型-为什么Java类型参数没有下限?

编辑:我带来一个好消息。 有一种方法可以获取您想要的大多数东西。public static > R createListFullOfEmptyString(IntFunction creator, int size){R list = creator.apply(size);for (int i = 0; i < size; i++){list.add("");}return list...

weixin_31111015的博客 208

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

JAVA中泛型的上下限(bounds)允许你限制类型参数的类型范围

JAVA中泛型的上下限(bounds)允许你限制类型参数的类型范围

u011842055的博客 57

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Java集合中使用泛型参数及泛型上下限的问题

集合中使用泛型限定:? extends Super(或? super Child),这种集合是只读的,因为“表达式右边永远是一个确定的值”

wonking666的博客 1042

Java泛型的上限和下限

泛型的上限 格式: 类型名称 <? extends 类 > 对象名称 意义: 只能接收该类型及其子类 泛型的下限 格式: 类型名称 <? super 类 > 对象名称 意义: 只能接收该类型及其父类型 例子:Object类,String 类,Number类,Integer类 public static void main(String[] args) { List list1 = new ArrayList(); List list2 = new ArrayList(); List

DMs60的博客 1044

Java设定泛型上限下限_Java 泛型通配符上限和通配符下限

③.1 extends T> 上限通配这里?表示一个未知的类,而T是一个具体的类,在实际使用的时候T需要替换成一个具体的类,表示实例化的时候泛型参数要是T的子类举个例子我们有一个水果类/*** 水果类*/public abstract class Fruit {public abstract void eat();}然后创建两种水果继承水果类Fruit/*** 苹果类*/public cla...

weixin_29450147的博客 217

java 泛型上下限

java泛型上下限 作用:使用泛型上下限可以限制可使用的数据类型范围 ********************************************* 泛型上下限使用 类的泛型上限:T只能为Number或者Number的子类 接口的泛型使用类似 class B<T extends Number>{ private T t; ...

weixin_43931625的博客 552

泛型上限与泛型下限

泛型上限 class Message<T extends Number>{ //泛型类 private T message; public T getMessage(){ return message; } public void setMessage(T message) { this.message = mes...

beststudent_的博客 1082

泛型(二)之上限与下限

/** * @author lixueni * 泛型上限实现 * 1.泛型类的上限 * 2.泛型方法的上限 * 3.参数的泛型上限 */ class Upper<T extends A>{ //2.(1)未设置上限的泛型方法。 public <D> void print(D d){ System.out.println("我是...

lxn_1135374534的博客 331

java 泛型 下限_java 泛型的上限与下限

设置泛型对象的上限使用extends,表示参数类型只能是该类型或该类型的子类:声明对象:类名 extends 类> 对象名定义类:类名{}设置泛型对象的下限使用super,表示参数类型只能是该类型或该类型的父类:声明对象:类名 super 类> 对象名称定义类:类名{}public static void show(List extends Number> l){}public...

weixin_42500818的博客 285

Java中的泛型介绍

1.泛型简介 1)基本概念 泛型的本质就是”数据类型的参数化“,处理的数据类型不是固定的,而是可以作为参数传入。我们可以把”泛型“理解为数据类型的一个占位符(类似:形式参数),即告诉编译器,在调用泛型时必须传入实际类型。这种参数类型可以用在类、接口和方法中,分别被称为泛型类,泛型接口,泛型方法。 把类型当作是参数一样传递 <数据类型>只能是引用类型 2)泛型的好处 代码可读性更好(不用强制转换) 程序更加安全(只要编译没有警告,运行时期就不会出现Class

lipengfei0427的博客 1600

java 泛型的上限与下限

设置泛型对象的上限使用extends,表示参数类型只能是该类型或该类型的子类: 声明对象:类名<? extends 类> 对象名 定义类:类名<泛型标签 extends 类>{} 设置泛型对象的下限使用super,表示参数类型只能是该类型或该类型的父类: 声明对象:类名<? super 类> 对象名称 定义类:类名<泛型标签 extends类&g...

weixin_30361753的博客 1407

java通配符上限下限_java泛型上限通配符和下限通配符

extends T>上限通配,表示?是T的一个未知子类。 super T>下限通配,表示?是T的一个未知父类。下面来分别讲一下1. extends T> 上限通配这里?表示一个未知的类,而T是一个具体的类,在实际使用的时候T需要替换成一个具体的类,表示实例化的时候泛型参数要是T的子类。举个例子我们有一个水果类/*** 水果类*/public abstract class Fr...

weixin_33502035的博客 712
上一篇: java泛型之一——类泛型
下一篇: java泛型之四——上下限
wangguangrong
博客等级 码龄14年 165粉丝 89原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值