java泛型和类型通配符,java – 泛型,类型参数和通配符

通用类型要了解的主要内容是它们不是协变的。

所以你可以这样做:

final String string = "string";

final Object object = string;

以下将不会编译:

final List strings = ...

final List objects = strings;

这是为了避免您规避泛型类型的情况:

final List strings = ...

final List objects = strings;

objects.add(1);

final String string = strings.get(0);

所以,一个个通过你的例子

1

您的通用方法采用列表< T>,您传递列表;这是(基本上)List< Object>。 T可以分配给对象类型,编译器很高兴。

2

您的通用方法相同,您传递列表>。 T可以分配给列表类型和编译器再次开心。

3

这与基本相同,具有另一个嵌套级别。 T仍然是列表类型。

4

这里是一个小梨形状,从上方来的地方在哪里。

您的通用方法采用List< List< T>。您传递列表>。现在,由于通用类型不是协变的,List不能分配给List< T>。

实际的编译器错误(Java 8)是:

required: java.util.List> found:

java.util.List> reason: cannot infer

type-variable(s) T

(argument mismatch; java.util.List> cannot be converted to java.util.List>)

基本上,编译器告诉你,由于必须推断出List< T>的类型,它找不到要分配的T。嵌套在外部列表中。

让我们再来一些细节:

列表与LT;?>是一些未知类型的列表 – 它可以是List< Integer>或List< String>;我们可以从Object获取,但是我们不能添加。因为否则我们遇到了我提到的协方差问题。

列表与LT;列表与LT;?>>是某个未知类型的列表的列表 – 它可以是List< List< Integer>>或列表>。在情况1中,可以将T分配给对象,并且不允许在通配符列表上添加操作。在这种情况下,这不能完成 – 主要是因为没有泛型构造来阻止添加到外部列表。

如果编译器在第二种情况下将T分配给Object,则可以执行以下操作:

final List> list = ...

final List> wildcard = list;

wildcard.add(Arrays.asList("oops"));

因此,由于协方差,不可能分配List< List< Integer>>到任何其他通用列表安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python学习指令_由Python到深度学习入门之常用命令

检查Anaconda是否成功安装&#xff1a;conda --version检测目前安装了哪些环境&#xff1a;conda info --envs检查目前有哪些版本的python可以安装&#xff1a;conda search --full-name python安装python 3.5版本(命令中的tensorflow是一个本地电脑的一个python环境名称不是te…

php的yii框架配置,php配置yii框架_PHP教程

个人爱好&#xff0c;研究了下php的yii框架。首先&#xff0c;研究yii框架的前提是下载php的一键安装和zend studio.. php的一键安装给出连接如下http://www.download3k.com/Install-XAMPP.html 。。。zend studion的链接如下http://www.zend.com/en/products/studio/downloads…

python box2d模拟平抛运动_论述如何基于Box2D模拟星球重力效果

作者&#xff1a;Emanuele Feronato随着《Angry Birds Space》的问世&#xff0c;我想你定非常疑惑要如何通过Box2D模拟星球重力。基本原理非常简单。首先&#xff0c;太空没有重力&#xff0c;所以你将通过如下方式创建没有重力的b2World世界&#xff1a;private var world:b2…

蚂蚁庄园 php源码,蚂蚁庄园五体投地

蚂蚁庄园五体投地&#xff0c;蚂蚁庄园小课堂的题目你答对了吗&#xff1f;今天题目有点难&#xff0c;大家可能不清楚&#xff0c;人们常常会对极其敬重的人五体投地&#xff0c;五体投地的五体指的是什么意思呢&#xff1f;“五体”又称“五轮”&#xff0c;指双肘、双膝和额…

python与javascript的区别_python与js区别有哪些

数据类型js和python都是动态语言&#xff0c;a 1; a abc&#xff0c;a这个变量是动态的&#xff0c;类型是随时可以被更改的。而在java中就是静态语言变量&#xff0c;int a 1&#xff1b;a abc 就会报错。基本命令1.输出js里面的console.log()、document.write()、window.…

fsk调制解调实验报告 matlab,基于MATLAB的-FSK调制与解调-通信原理实验

《基于MATLAB的-FSK调制与解调-通信原理实验》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《基于MATLAB的-FSK调制与解调-通信原理实验(2页珍藏版)》请在人人文库网上搜索。1、实验五 FSK调制与解调1实验目的和要求用MATLAB实现二进制序列的fsk调制与解调2实验内容用…

电脑端二维码识别工具_电脑端自签工具更新,多功能软件一键签名

因为苹果后台的调整&#xff0c;电脑端的自签工具 Cydia Impactor 一直无法使用&#xff0c;如今虽然没有等到大胡子对 Cydia Impactor 适配更新&#xff0c;却等到了全新的替代工具。先说下为什么 Cydia Impactor 为什么让那么多人惦记&#xff0c;虽然对于不越狱安装越狱工具…

python列表是顺序表还是链表_顺序表与链表

Python中的顺序表 Python中的list和tuple两种类型采用了顺序表的实现技术&#xff0c;具有前面讨论的顺序表的所有性质。 tuple是不可变类型&#xff0c;即不变的顺序表&#xff0c;因此不支持改变其内部状态的任何操作&#xff0c;而其他方面&#xff0c;则与list的性质类似。…

python只读模式可以打印嘛_只读python属性?无法打印对象

在Python中&#xff0c;使用自定义描述符可以很容易地做到这一点。在看看HOWTO中的Descriptor Example。如果您只需更改__get__方法来引发一个AttributeError就这样了。我们不妨将其重命名&#xff0c;去掉日志记录&#xff0c;使之更简单。在class WriteOnly(object):"&q…

php 查文件sha1 内存不足,SHA是否足以检查文件重复? (PHP中的sha1_file)

sha1_file足够好吗&#xff1f;使用sha1_file就足够了,碰撞的可能性非常小,但这种情况几乎不会发生.为了减少几乎0比较文件大小的几率&#xff1a;function is_duplicate_file( $file1,$file2){if(filesize($file1) ! filesize($file2)) return false;if( sha1_file($file1) s…

js for foreach 快慢_js基本搜索算法实现与170万条数据下的性能测试

前言今天让我们来继续聊一聊js算法&#xff0c;通过接下来的讲解&#xff0c;我们可以了解到搜索算法的基本实现以及各种实现方法的性能&#xff0c;进而发现for循环&#xff0c;forEach&#xff0c;While的性能差异&#xff0c;我们还会了解到如何通过web worker做算法分片&am…

python获取工作日_Python获取一段日期内的工作日和所有日期

Pandas1、获取工作日&#xff1a;bdate_rangeimport pandas as pde pd.bdate_range(8/7/2019, 8/31/2019)e.date #获取日期列表array([datetime.date(2019, 8, 7), datetime.date(2019, 8, 8),datetime.date(2019, 8, 9), datetime.date(2019, 8, 12),datetime.date(2019, 8, …

iterm php,iTerm2笔记

本文是 iTerm2 的使用笔记&#xff0c;不定期更新。1 注释说明对于 Preferences 的修改&#xff0c;> 表示需要切换选项卡&#xff0c;-> 表示在同一选项卡内2 参考3 杂301 如何随时随地一键调用 Quake-like iTerm2首先声明&#xff1a;由于 Mac OS 本身对窗体「最大化」…

python 正则表达式 sub_python 正则表达式 re.sub re.subn

python正则表达式模块简介Python 自1.5版本起增加了re 模块&#xff0c;它提供 Perl 风格的正则表达式模式。Python 1.5之前版本则是通过 regex 模块提供 Emacs 风格的模式。Emacs 风格模式可读性稍差些&#xff0c;而且功能也不强&#xff0c;因此编写新代码时尽量不要再使用 …

清浊音判别 matlab,matlab语音信号处理如何判别清浊音?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这是我一个学长给的程序&#xff0c;他说里面要算得基本上已经实现了改一下就可以用了。。。但是i本人不是主攻matlab的说白了就是不怎么会&#xff0c;&#xff0c;想问下该怎么改来实现判断清浊音的功能。%对语音信号采样分帧cle…

python upper_Python 3中的模块级string.upper函数在哪里?

如何让这段代码在3中运行&#xff1f; 请注意&#xff0c;我不是"foo".upper()在字符串实例级别询问。import string try: print("string module, upper function:") print(string.upper) foo string.upper("Foo") print("foo:%s" % …

python数据科学实践 常象宇_Python数据科学实践

章基于Python的数据科学环境搭建1.1Python是数据科学“大势所趋”1.2Anaconda入门——工欲善其事&#xff0c;必先利其器1.3JupyterNotebook入门1.4Markdown单元格的使用1.5Spyder入门1.6小结第2章Python基础2.1“火锅团购数据”简介2.2读写数据2.3Python数据类型与结构2.4控制…

matlab emd功率谱密度,【脑电信号分类】脑电信号提取PSD功率谱密度特征

脑电信号是一种非平稳的随机信号&#xff0c;一般而言随机信号的持续时间是无限长的&#xff0c;因此随机信号的总能量是无限的&#xff0c;而随机过程的任意一个样本函数都不满足绝对可积条件&#xff0c;所以其傅里叶变换不存在。不过&#xff0c;尽管随机信号的总能量是无限…

小甲鱼python课后题简书_Python练习题100道

1.有四个数字&#xff1a;1,2,3,4&#xff0c;能组成多少个互不相同且无重复数字的三位数&#xff1f;各是多少&#xff1f; 方法一&#xff1a;遍历所有可能&#xff0c;把重复的剃掉。 total0 for i in range(1,5): for j in range(1,5): for k in range(1,5): if((i!j)and(j…

决策算法python_GitHub - nxety/MachineLearning_Python: 机器学习算法python实现

机器学习算法Python实现目录1、代价函数其中&#xff1a;下面就是要求出theta&#xff0c;使代价最小&#xff0c;即代表我们拟合出来的方程距离真实值最近共有m条数据&#xff0c;其中代表我们要拟合出来的方程到真实值距离的平方&#xff0c;平方的原因是因为可能有负值&…