黑马程序员 Java泛型

JLink版本不兼容?手把手教你解决APM32F003F6P6在Keil中烧写闪退和报错 本文详细解析了APM32F003F6P6在Keil中烧写闪退和报错的解决方案,重点介绍了JLink版本兼容性问题。通过实测不同版本组合,推荐使用JLink 7.20a或6.86b与Keil 5.25的黄金组合,并提供详细的降级驱动和工程配置步骤,帮助开发者高效解决烧写困境。 阅读详情

------- android培训、java培训、期待与您交流! ----------

1,泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合时会去掉“类型”信息,使程序运行效率不受影响,对于参数化的泛型类型,getClass()方法的返回值和原始类型完全一样。由于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器,就可以往某个泛型集合中加入其它类型的数据,例如,用反射得到集合,再调用其add方法即可。

2, ArrayList<E>类定义和ArrayList<Integer>类引用中涉及如下术语:
(1)整个称为ArrayList<E>泛型类型
(2)ArrayList<E>中的E称为类型变量或类型参数
(3)整个ArrayList<Integer>称为参数化的类型
(4)ArrayList<Integer>中的Integer称为类型参数的实例或实际类型参数
(5)ArrayList<Integer>中的<>念着typeof
(6)ArrayList称为原始类型
3, 参数化类型与原始类型的兼容性:
(1)参数化类型可以引用一个原始类型的对象,编译报告警告,例如:
Collection<String> c = new Vector();
(2)原始类型可以引用一个参数化类型的对象,编译报告警告,例如:
Collection c = new Vector<String>();
4, 参数化类型不考虑类型参数的继承关系:
(1)Vector<String> v = new Vector<Object>();//错误!
(2)Vector<Object> v = new Vector<String>();//也错误!!!!!!!!!!!
5, 在创建数组实例时,数组的元素不能使 用码数化的类型,例如,下面的语句有错误:
Vector<Integer> vectorList[]= new Vector<Integer>[10]; 
6, 思考题:下面的代码会报错吗?
Vector v1 = new Vector<String>();
Vector<Object> v = v1;
刚开始一看到这题我觉得他会报错,为了验证下自己的观点是否正确就在开发环境里试了下,结果居然没有报错,我写成这样就报错Vector<Object> v1 = new Vector<String>();后来听张老师一解说,我就明白了,原来编译器没有那么聪明,它只是按照语法来编译的,语法上能编译通过就行,第一句就是原始类型引用一个参数化类型的对象,第二句就是参数化类型引用一个原始类型的对象,所以编译器不会报错
7, Java中的泛型类型(或者泛型)类似于C++中的模板。但是这种相似性仅限于表面,Java语言中的泛型基本上完全是在编译器中实现,用于编译器执行类型检查和类型推断,然后生成普通的非泛型的字节码,这种实现技术称为擦除(erasure)(编译器使用泛型类型信息保证类型安全,然后在生成字节码之前将其清除)。这是因为扩展虚拟机指令集来支持泛型被认为是无法接受的,这会为Java厂商升级其JVM造成难以逾越的障碍。所以,Java的泛型采用了可以完全在编译器中实现的擦除方法。
8, 定义泛型方法:
(1)Java的泛型方法没有C++模板函数功能强大,Java中的如下代码无法通过编译:
<T> T add(T x, T y){
return (T)(x+y);
}
(2)交换数组中的两个元素的位置的泛型方法语法定义如下:
static <E> void swap(E[] a, int i, int j){
E t = a[i];
a[i] = a[j];
a[j] = t;
}
(3)用于放置泛型的类型参数的尖括号应出现在方法的其它所有修饰符之后和在方法的返回类型之前,也就是紧邻返回值之前,按照惯例,类型参数通常用单个大写字母表示。
(4)只有引用类型才能作为泛型方法的实际参数。swap(new int[3], 3, 5);语句会报告编译错误。
9, 用下面的代码说明对异常如何采用泛型:
private static <T extends Exception> sayHello()throws T{
try{
}catch(Exception e){
throw (T)e;
}
}
注意:catch方法的形参类型不能改为T
10, 定义泛型类型
(1)如果类的实例对象中的多处都要用到同一个泛型参数,即这些地方引用的泛型类型要保持同一个实际类型时,这时候就要采用泛型类型的方式进行定义,也就是类级别的泛型,语法格式如下:
public class GenericDao<T>{
private T field1;
public void save(T obj){}
public T getByID(int ID){}
}
(2)类级别的泛型是根据引用该类名时指定的类型信息来参数化类型变量的,例如,如下两种方式都可以:
GenericDao<String> dao = null;
new GenericDao<String>();
注意:
(1)在对泛型类型进行参数化时,类型参数的实例必须是引用类型,不能是基本类型。
(2)当一个变量被声明为泛型时,只能被实例变量和方法调用(还有内嵌类型),而不能被静态变量和静态方法调用。因为静态成员是被所有参数化的类所共享的,所以静态成员不应该有类级别的类型参数。
11, 可以通过反射获得泛型的参数化类型,以个是核心代码部分:
//Vector<Date> v1 = new Vector<Date>();
Method applyMethod = GenericTest.class.getMethod("applyVector",Vector.class);
Type[] types = applyMethod.getGenericParameterTypes();
ParameterizedType pType = (ParameterizedType)types[0];
System.out.println(pType.getRawType());
System.out.println(pType.getActualTypeArguments()[0]);
public static void applyVector(Vector<Date> v1){
}
基于扣子3.0复刻MIT“AI股神团队版”:实时股票数据API接入与策略选股复盘系统 基于扣子3.0的AI量化投资系统摘要 本文提出了一种基于扣子(Coze)3.0平台的AI量化投资解决方案,整合实时股票数据与策略选股功能。系统采用三层架构: 数据层:通过AKShare等开源工具获取A股实时行情和历史K线数据,支持批量数据抓取和清洗 策略层:内置多因子选股模型和技术指标分析模块,实现自动化标的筛选 应用层:利用扣子3.0的插件和工作流功能,构建从数据采集到投资建议的完整流程 系统特点包括:完全开源的数据接入方案、Python实现的策略计算模块、以及扣子平台提供的可视化编排能力~~~~~~~~ 阅读详情

相关推荐

用scons编译STM32F103工程

想用vscode来实现代码的编辑与调试代码,原先这个工程是用STM32CUBEIDE建立的,参照STM32CUBEIDE的编译过程,编写了下面的scons脚本,scons是初次了解,既然是python脚本,那么会什么就怎么写吧。 import os import sys import glob cross_compiler_prefix = 'arm-none-eabi-' CC = cross_compiler_prefix+'gcc' CXX = cross_compiler_prefix+'g+

cylinc的专栏 1621

黑马程序员—泛型

------- android培训、java培训、期待与您交流! ----------   1,泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合时会去掉“类型”信息,使程序运行效率不受影响,对于参数化的泛型类型,getClass()方法的返回值和原始类型完全一样。由于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器,就

Andy的乐园 683

(入门向)在Ubuntu22.04.3安装Matlab2021b,以及无法安装在当前目录下的解决办法(见最后)

还有这个/usr/local是只读状态,我试过sudo chmod..去改那个文件的读,结果还是安装不了,我不是这个默认路径,因为它文件夹还是只读,于是我在matlab2021b下创了一个bin,并选上。输入完成后,依次按y,因为里面有三个文件,他会让你确定3次密码,直接yyy跳过即可。你可能会遇到装不下的情况,这个软件占30g,可是你分配给虚拟机就剩10g。,于是我去Downloads下建了一个matlab2021b文件夹,果然好使,3).此时,会提示你输入密码,因为这个rar是有密码的,

harrype的博客 7282

黑马程序员--泛型

----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ---------------------- 泛型 (一)概述: 1,对于集合来讲,它里面可以装的是Object类型,但是,在jdk1.5之后,出现了泛型,所谓的泛型就是在创建一个集合的时候,首先要明确该集合需要存储对象的类型,这样就提高了安全。如:当你使用Arr

zmssln的专栏 411

Win10更新后黑屏只剩鼠标?火绒误杀explorer.exe的5种自救方案(附详细步骤)

本文详细介绍了Win10更新后出现黑屏只剩鼠标的5种专业修复方案,重点解决火绒误杀explorer.exe的问题。从基础的任务管理器操作到安全模式下的系统修复,再到注册表编辑和系统还原,提供了全面的解决方案,帮助用户快速恢复系统正常运行。

weixin_29306571的博客 636

SecureCRT 9.0最新版安装与激活全攻略(附驱动识别技巧)

本文提供SecureCRT 9.0最新版的详细安装与激活指南,并重点解析了嵌入式开发中串口连接的硬件驱动识别技巧。内容涵盖从安全获取软件、解决USB转串口驱动兼容性问题,到配置SSH与串口会话的完整流程,旨在帮助开发者和工程师高效部署并精通使用这款终端仿真利器。

star的博客 407

黑马程序员-泛型

黑马程序员-泛型 gain

u010513299的专栏 618

使用LaTex写IEEE trans 论文的参考文献(bib)

(1)在.TeX文件的最下方添加这几行内容,主要为生成tran形式的参考文献,第二行为参考文献名称,我命名为reference.bib,所以写的是reference,要根据自己的命名改写。(5)如果要在文中引用的话,就在.tex文件中添加\cite{},中括号里面内容为方框圈出来部分,但引用之后,在参考文献后面会出现[1]这样的标识,不知道为什么。(4)完成(3)以后,点击工具-命令-LaTeX,编译,然后按照此步骤LaTeX-bibtex-LaTeX-LaTeX,就可以完成参考文献的导入。

qq_45884215的博客 6258

泛型总结

1. 为什么要使用泛型   因为   1)使用泛型意味着编写的代码可以被很多个不同类型的对象所重用。   2)使用泛型之后可以减少类型转换的风险   2.泛型类  1) 类定义中的类型变量指定了方法的返回类型以及域和局部变量的类型。  2) 在生成泛型类的实例时,没有强制要求要去设置其类型参数,只是不设置类型参数时,会给出警告:   如"Test is a raw type. Referenc...

lzw0286的专栏 216

【AI实战派】从零部署YOLOv8:香橙派AIpro边缘端目标检测全流程解析

本文详细解析了在香橙派AIpro边缘设备上从零部署YOLOv8目标检测模型的全流程。内容涵盖硬件开箱、环境搭建、模型转换(ONNX到昇腾OM格式)以及编写Python推理脚本,并提供了性能优化与实战技巧,帮助开发者高效实现实时边缘AI应用。

weixin_29183637的博客 327

STM32H750xx【QSPI】轮询方式读写GD25Q64E

本文详细介绍了GD25Q64E其特性、引脚定义及功能说明,重点阐述了在STM32H750平台上通过CubeMX配置QuadSPI接口的步骤,包括时钟设置、参数优化等。文章提供了完整的BSP驱动开发流程,涵盖写使能、四线模式使能、ID读取、解除保护、扇区擦除、整片擦除、页编程和数据读取等关键功能实现,并通过读写测试验证了DummyCycles参数对数据准确性的影响。

honmy18的博客 1421

黑马程序员——Java 泛型

------- android培训、java培训、期待与您交流! ---------- Java 泛型(Generircs) ------- android培训、java培训、期待与您交流! ----------

毒匠的专栏 1395

ASP.NET Core 6 Web API在IIS上的部署与调试

通过以上步骤和配置,你应该能够成功部署并调试你的ASP.NET Core 6 Web API在IIS上。记住,权限和配置是关键,确保你的环境和应用程序代码都正确设置。希望这篇博客对你部署和解决IIS上的问题有所帮助。

m0_74337424的博客 522

黑马程序员——java基础之泛型

——- android培训、java培训、期待与您交流! ———- 泛型一 初识泛型泛型:JDK1.5版本以后出现的新特性,用于解决安全问题 是一个类型安全机制 - JDK1.5的集合类希望在定义集合时,明确表明你要向集合中装入那种类型的数据,无法加入指定类型以外的数据。 - 泛型是提供给javac编译器使用的可以限定集合中的输入类型说明的集合时,会去掉“类

back 687

lwip-2.0.3

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

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

黑马程序员——java基础——泛型

Collections:它的出现给集合操作提供了更多的功能。这个类不需要创建对象,内部提供的都是静态方法。 静态方法: Collections.sort(list);//list集合进行元素的自然顺序排序。 Collections.sort(list,new ComparatorByLen());//按指定的比较器方法排序。 class ComparatorByLen implements

Huberry的专栏 804

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

黑马程序员——java中的泛型

------- android培训、java培训、期待与您交流! ---------- 泛型的概述: 泛型是JDK1.5之后的新特性,用于解决安全问题,是一个安全机制。 好处: 1  将运行时期出现的问题,转移到编译时期,方便程序员解决问题。让运行时问题减少。 2  避免了强制转换的麻烦 泛型的格式: 通过 //list集合只能接收String类型 List list = n

GaoTao_hm的专栏 510

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

黑马程序员-java泛型

------- android培训、java培训、期待与您交流! ---------- 泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序的非法输入,编译器编译带类型说明的集合时会去除掉“类型”信息,使程序院校效率不受影响。对于参数化的泛型类型,getClass()方法的返回值和原始类型完全一样。由于编译生成的字节码会去掉泛型的类型信息,只用能跳过编译器,就可以...

weixin_30950607的博客 403

黑马程序员—Java泛型

Map: •Map 用于保存具有映射关系的数据,因此Map 集合里保存着两组值,一组值用于保存 Map 里的 Key,另外一组用于保存 Map 里的 Value •Map 中的 key 和 value 都可以是任何引用类型的数据 •Map 中的 Key 不允许重复,即同一个 Map 对象的任何两个 Key 通过 equals 方法比较中返回 false •Key 和

welcome to my blog,thank you! 630

黑马程序员_JAVA-泛型

泛型是JDK1.5版本之后出现的新特性,用于解决安全问题 好处: 1.将运行时期出现问题ClassCastException,转移到了编译时期,方便程序员解决问题,让运行时期问题减少 2.避免了强制转换的麻烦 通过 ArrayList a1 = new ArrayList(); //限定集合成员类型为String Iterator it = a1.iterator();

ifluofeng的专栏 522

黑马程序员——Java之泛型

------Java培训、Android培训、iOS培训、Net培训、期待与您交流! -------

lwb0304的博客 450

黑马程序员 Java泛型

---------------------- android培训、java培训、期待与您交流! ---------------------- 编译时不检查类型的异常 1 import java.util.*; 2 class GenericDemo 3 { 4 public static void main(String[] args) 5 { ...

weixin_30527143的博客 134

黑马程序员_JAVA泛型

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 介绍  泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型...

chengweijun8866的博客 258

黑马程序员_Java泛型

/* 整个称为ArrayList泛型类型 ArrayList中的E称为类型变量或类型参数 整个ArrayList参数化的类型 ArrayList中的Integer称为类型参数的实例或实际类型参数 ArrayList中<>念typeof ArrayList称为原始类型 在创建数组实例时,数组的元素不能使用参数化的类型 Vertor vectorList[] = new Vecto

u013921901的专栏 667

黑马程序员_java泛型

泛型      泛型:是提供给java编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入.编译器编译带类型说明的集合时,会去除掉”类型”信息,使用程序运行效率不受影响,对于参数化的泛型类型,getClass()方法的返回值和原始类型完全一致.由于编译生成的字节码会去掉”类型信息”,只要能跳过编译器,就可以往某个泛型集合中加入其它的类型的数据,例如用反射得到集合,再调用其add

zhengylsc的专栏 938

黑马程序员——Java基础——泛型

泛型是JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制。 好处:1、将运行时期出现的问题转移到编译时期,方便于程序员解决问 题,让运行事情问题减少,安全。 2、避免了强制转换麻烦。 格式:通过来定义要操作的引用数据类型。在集合框架很常见。 如下面: import java.util.*; public class FanX

twa42的博客 415

黑马程序员 java_泛型

                                      ------- android培训、java培训、期待与您交流! ----------       泛型     在我们定义的类和方法中,只能使用具体的类型,并且这些类型需要在定义时就已明确。如果要编写可以应用于多种类型的代码,使用上面的方式定义类和方法,显然不可行。这时就要使用泛型。泛型可以让代码用于多...

hdsjsql12的博客 311
上一篇: 黑马程序员 Java网络编程
下一篇: 黑马程序员 Java底层类加载器
focusjava
博客等级 码龄14年 127粉丝 528原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值