<?>和<? extends Object>的区别

From a practical point to most people, <? extends Object> is the same as <?>, like everyone have suggested here.

However, they differ in two very minor and subtle points:

  1. The JVMS (Java Virtual Machine Specification) has a special specification for the unbounded wildcards, as ClassFileFormat-Java5 specifies that unbounded wildcard gets encoded as *, while encodes a Object-bounded wildcard as +Ljava/lang/Object;.  Such change would leak through any library that analyzes the bytecode.  Compiler writers would need to deal with this issue too.  From revisions to "The class File Format"
  2. From reifiablity standpoint, those are different.  JLS 4.6 and 4.7 codify List<?> as a reifiable type, but List<? extends Object> as a erasured type.  Any library writer adding .isReifiable() (e.g. mjc lib) needs to account for that, to adhere to the JLS terminology.  From JLS 4.6 and 4.7.

这个解释超牛逼,先把它记下来。它来自于http://stackoverflow.com/questions/2016017/unbounded-wildcards-in-java/2016382#2016382

时间: 2024-08-29 09:38:12

<?>和<? extends Object>的区别的相关文章

Standard C 之 math.h和float.h

对于C Standard Library 可以参考:http://www.acm.uiuc.edu/webmonkeys/book/c_guide/ 或者 http://www.cplusplus.com/reference/ (一) <math.h> 常用函数: 1. 三角函数 double sin(double);正弦 double cos(double);余弦 double tan(double);正切 2 .反三角函数 double asin (double); 结果介于[-PI/2,

&lt;limits.h&gt;和&lt;float.h&gt;

头文件<limits.h>中定义了用于表示整类型大小的常量.以下所列的值是可接受的最小值,实际系统中可能有更大的值. CHAR_BIT 8 char类型的位数 CHAR_MAX UCHAR_MAX或SCHAR_MAX char类型的最大值 CHAR_MIN 0或SCHAR_MIN char类型的最小值 INT_MAX 32767 int类型的最大值 INT_MIN -32767 int类型的最小值 LONG_MAX 2147483647 long的最大值 LONG_MIN -214748364

stdio.h和math.h文件内容

下面的头文件来自CodeBlocks 13.12配套的MINGW,主要是为了方便好奇的同学. 第一个文件是stdio.h. EOF在第47行 printf在第294行 FILE在第139行 stdin在第158行 1 /* 2 * stdio.h 3 * This file has no copyright assigned and is placed in the Public Domain. 4 * This file is a part of the mingw-runtime packa

df -h和du -h 占用空间为什么差这么多?

当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力.   du可以查看文件及文件夹的大小. 两者配合使用,非常有效.比如用df查看哪个一级目录过大,然后用df查看文件夹或文件的大小,如此便可迅速确定症结. 下面分别简要介绍 df命令可以显示目前所有文件系统的可用空间及使用情形,请看下列这个例子: 以下是代码片段: [[email protected] ~]$ df -hFilesystem 

VS2013使用winsock.h和winsock2.h发生冲突后的终极解决方法

问题:彻底无语了,不小心某个文件包含了windows.h头文件,而windows.h文件里面包含着winsock.h文件, 如果你下次使用winsock2.h文件时,位置不对,然后编译器会给你一大堆重定义错误问题. 初级解决办法: 把winsock2.h文件放在任何可能包含winsock.h文件(尤其是windows.h文件,它就包含了winsock.h文件)的前面,因为winsock2.h头文件有这样的宏定义: #ifndef _WINSOCK2API_#define _WINSOCK2API

最简单的基于librtmp的示例:发布H.264(H.264通过RTMP发布)

本文记录一个基于libRTMP的发布H.264码流的程序.该程序可以将H.264数据发布到RTMP流媒体服务器.目前这个例子还不是很稳定,下一步还有待修改. 本程序使用回调函数作为输入,通过自定义的回调函数,可以发送本地的文件或者内存中的数据. 函数调用结构图 本程序的函数调用结构图如下所示. 整个程序包含3个接口函数:RTMP264_Connect():建立RTMP连接.RTMP264_Send():发送数据.RTMP264_Close():关闭RTMP连接.按照顺序调用上述3个接口函数就可以

P?H?P?中?h?t?t?p?协?议?详?解

对PHP文件来说 Php可以有  html   css javascript php脚本 flash它的不同部分是在不同的地方执行的(服务器和客户端) http协议 1. http协议是建立在 tcp/ip协议基础上 2. 我们的web开发数据的传输都是依赖于http协议 3. http协议全称是超文本传输协议 http协议的  http请求 基本结构: 请求行 消息头 消息体(实体内容) Accept  text/html,application/xhtml+xml,application/x

24&gt;&gt;sys/types.h和fcntl.h有什么用

sys/types.h 是Unix/Linux系统的基本系统数据类型的头文件,含有size_t,time_t,pid_t等类型. 在应用程序源文件中包含 <sys/types.h> 以访问 _LP64 和 _ILP32 的定义.此头文件还包含适当时应使用的多个基本派生类型.尤其是以下类型更为重要: clock_t 表示系统时间(以时钟周期为单位). dev_t 用于设备号. off_t 用于文件大小和偏移量. ptrdiff_t 是一种带符号整型,用于对两个指针执行减法运算后所得的结果. si

已经包含了#include &lt;atlcom.h&gt; #include &lt;comutil.h&gt;还是报错

在WTL工程的.h中 #include <atlbase.h>#include <atlcom.h>#include <atlcomcli.h>#include <atlctl.h>#include <atlwin.h>#include <comutil.h> 结果还是下面一堆错,为什么呢,因为你没有使用这个using namespace ATL; 加上这个下面错全部消失. error C2061: syntax error : id

几大常用头文件stdio.h,stdio.h ,stdbool.h里的定义

C 标准库 - <stdio.h> 简介 stdio .h 头文件定义了三个变量类型.一些宏和各种函数来执行输入和输出. 库变量 下面是头文件 stdio.h 中定义的变量类型: 序号 变量 & 描述 1 size_t  这是无符号整数类型,它是 sizeof 关键字的结果. 2 FILE  这是一个适合存储文件流信息的对象类型. 3 fpos_t  这是一个适合存储文件中任何位置的对象类型. 库宏 下面是头文件 stdio.h 中定义的宏: 序号 宏 & 描述 1 NULL