- 浏览: 961818 次
- 性别:
- 来自: 江西上饶
文章分类
- 全部博客 (460)
- p.spring (56)
- p.maven (20)
- p.ant (17)
- p.jee (18)
- p.jse (33)
- p.ofbiz (31)
- p.软件工程 (8)
- p.struts2 (5)
- p.hibernate (5)
- linux (25)
- 设计模式 (2)
- p.javascript (11)
- 硬件 (1)
- p.jsp (2)
- p.windows批处理 (1)
- 操作系统问题 (5)
- 算法 (1)
- p.mysql (7)
- p.sql (5)
- p.c (1)
- google产品 (0)
- 内存 (1)
- p.struts (1)
- p.freemarker (7)
- p.css (4)
- p.log4j (10)
- p.html (3)
- 淘宝产品 (0)
- 其他 (3)
- 编译器 (0)
- svn (4)
- p.spring.security (11)
- 图形 (0)
- p.xml (1)
- p.ssh (0)
- p.jquery (4)
- p.jdbc (3)
- p.flex (0)
- p.c++ (0)
- p.c#Net (0)
- p.assembly (0)
- p.sqlserver (0)
- p.其他 (3)
- p.webwork (21)
- p.wap (12)
- p.cglib (1)
- p.jee服务器 (11)
- windows (2)
- p.iphone (1)
- p.java.分布式与集群 (2)
- p.ibatis (16)
- p.eclipse (5)
- 架构 (2)
- http协议 (5)
- 我的个人标准 (2)
- 多线程 (1)
- 奇怪问题 (5)
- p.jira (13)
- p.httpclient (1)
- 服务器.apache (11)
- 安全防范 (1)
- p.PODAM (1)
- p.junit (16)
- fop (2)
- 硬盘安装 (1)
- powerdesigner (0)
- 单元测试 (1)
- apache commons (4)
- tomcat+apache集群 (10)
- 各类诡辩 (1)
- 安卓 (8)
- qvod (1)
- java编程基础知识考试考点及答案 (0)
- 工作总结 (4)
- oracle (0)
- spring的util工具 (3)
- json (2)
- maven (3)
- jms (19)
- p.bat (3)
- hadoop (2)
- git (3)
- nginx (1)
- p.移动开发 (1)
- shiro (3)
- 游戏破解 (1)
- react-native (7)
- ios开发 (1)
- webmagic (6)
- socks5 (1)
最新评论
-
weituotian:
说的不好,没人看的
公司系统中的菜单功能和权限功能 -
石不易:
非常详细的注解~
绑定端口和IP,Listen 与VirtualHost指令 -
spring_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
spring mvc -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装 -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装
上界:
上界用extends关键字声明,表示参数化的类型可能是所指定的类型,或者是此类型的子类。如下面的代码:
出错的情况
Map<String, ? extends Object> map = new HashMap<String, Object>();
map.put("aaaa", "aaaaaa");
这里会出错,是因为extends关键字声明,表示参数化的类型可能是所指定的类型,或者是此类型的子类。因此,实际的map对象的value类型,可能是Integer String Long 等等。而实际的map变量的value类型是不可预测的。假设实际的map的value类型是Integer,那么不就有问题了,因为万一是Integer的话,它无法存入String的。因此在编译器就报错了。
下界
下界用super进行声明,表示参数化的类型可能是所指定的类型,或者是此类型的父类型,直至Object。如下面的
Map<String, ? super Object> map = new HashMap<String, Object>();
map.put("aaaa", "aaaaaa");
这个时候就不会抱错了。
因为这个时候的value泛型类型可能是Object或者Object的父类,因此,你传String进去,肯定能包容这个value。
下界
下界用super进行声明,表示参数化的类型可能是所指定的类型,或者是此类型的父类型,直至Object。如下面的代码:
Map<String, ? super String> map = new HashMap<String, String>();
map.put("aaaa",new Object());
依然抱错。
原因类型,表示参数化的类型可能是所指定的类型,或者是此类型的父类型,直至Object。既然可能是指定类型的父类,理论上应该可以put父类,但是别忘了,如果实际的泛型类型是String,String x = new Object();(这句就肯定编译不成功),Object它不是String类型,自然不能put进去。
上界用extends关键字声明,表示参数化的类型可能是所指定的类型,或者是此类型的子类。如下面的代码:
出错的情况
Map<String, ? extends Object> map = new HashMap<String, Object>();
map.put("aaaa", "aaaaaa");
这里会出错,是因为extends关键字声明,表示参数化的类型可能是所指定的类型,或者是此类型的子类。因此,实际的map对象的value类型,可能是Integer String Long 等等。而实际的map变量的value类型是不可预测的。假设实际的map的value类型是Integer,那么不就有问题了,因为万一是Integer的话,它无法存入String的。因此在编译器就报错了。
下界
下界用super进行声明,表示参数化的类型可能是所指定的类型,或者是此类型的父类型,直至Object。如下面的
Map<String, ? super Object> map = new HashMap<String, Object>();
map.put("aaaa", "aaaaaa");
这个时候就不会抱错了。
因为这个时候的value泛型类型可能是Object或者Object的父类,因此,你传String进去,肯定能包容这个value。
下界
下界用super进行声明,表示参数化的类型可能是所指定的类型,或者是此类型的父类型,直至Object。如下面的代码:
Map<String, ? super String> map = new HashMap<String, String>();
map.put("aaaa",new Object());
依然抱错。
原因类型,表示参数化的类型可能是所指定的类型,或者是此类型的父类型,直至Object。既然可能是指定类型的父类,理论上应该可以put父类,但是别忘了,如果实际的泛型类型是String,String x = new Object();(这句就肯定编译不成功),Object它不是String类型,自然不能put进去。
发表评论
-
java实现socks5
2019-07-16 23:05 1727socks5的基础知识 关于socks5的定义]https: ... -
java Runtime.exec方法详解
2019-07-11 14:11 21561.关于CMD(为了让exec ... -
Spring 定时任务,cron表达式,@Scheduled cron表达式
2016-04-25 15:48 5303一个cron表达式有至少6 ... -
xulrunner
2016-01-13 13:07 669http://ftp.mozilla.org/pub/xulr ... -
谈一谈自己对依赖、关联、聚合和组合之间区别的理解
2015-11-17 16:05 780在学习面向对象设计对象关系时,依赖、关联、聚合和组合这四种关系 ... -
java apache common unicode处理
2015-09-19 15:17 1567if (UnicodeConvertType.中文转unico ... -
jdbc ssh通道
2015-09-17 14:40 1866java通过ssh链接数据库,需要用到 JSCH是一个纯粹的用 ... -
swt 窗口 最大化最小化按钮设置等
2015-09-14 17:53 4330窗体顶部菜可以在实例化的时候设置,也可以单独设置:Shell ... -
java.lang.Process调用程序阻塞问题解决
2015-08-14 10:56 4264这两天一直在处理flv视频环境的搭建工作,包括服务器的安 ... -
java html解析
2015-07-31 17:31 1214dom解析是常用dom4j。 android中我们常用的是sa ... -
slf4j门面模式实现原理
2015-07-16 10:08 2987在使用slf4j的时候,只 ... -
java - 比较时间-相差月数
2015-06-15 09:57 1471Date经常会出现比较两个Date相差的月数,实际上可以做一个 ... -
log4jdbc
2014-12-25 13:55 3054该框架目前支持到jdbc3.和jdbc4的版本。 提供了多种 ... -
jdbc规范 jdbc1 jdbc2 jdbc3 jdbc4
2014-12-25 13:49 5076目前jdbc规范已经升级到 ... -
反射,代理,动态java原理
2014-12-22 16:44 1124需要两个类,用于下面的测试 package test; ... -
Bean Validation 1.0(JSR-303)
2014-11-18 16:15 1097http://jinnianshilongnian.iteye ... -
JRE最小化原理
2014-10-15 20:19 1309比如我们一个程序只用到了很少的类,像String,Intege ... -
时间重叠的判断
2014-02-14 11:16 1652如上图,粗线是时间1 细线是时间2 时间重叠,只可能是以上四 ... -
java获取当前类的绝对路径
2013-12-14 00:37 9001.如何获得当前文件路径 常用: (1).Test.class ... -
枚举 enum
2013-12-13 16:52 5236java的enum其实是一个类。编译器根据你enum的定义会为 ...
相关推荐
泛型中extends和super的区别Java系列2021.pdf 在Java中,extends和super是两个重要的泛型通配符,它们用于限制类型参数的范围。了解它们的区别非常重要,否则可能会导致编程错误。 extends关键字 在泛型中,...
在 Java 泛型中,extends 和 super 是两个重要的关键字,它们分别用于限定类型的上界和下界。 extends 用于限定类型的上界,表示参数化类型可能是 T 或 T 的子类。例如: List<? extends Fruit> flist = new ...
Java泛型extends及super区别实例解析 Java泛型中的通配符(Wildcards)和边界(Bounds)是两个重要的概念,分别由 <? extends T> 和 <? super T> представляют。这些概念的出现是为了解决泛型中的一些...
Java 泛型 super T 中 super 怎么 理解?与 extends 有何不同? - 副本
经常发现有List<? super T>、Set<? extends T>的声明,是什么意思呢?<? super T>表示包括T在内的任何T的父类,<? extends T>表示包括T在内的任何T的子类,下面我们详细分析一下两种通配符具体的区别。
泛型学习和泛型接口和泛型经典示例
- **上限和下限**:可以通过`extends`和`super`关键字指定泛型的上限和下限。例如,`List<? extends Number>`表示该列表可以接受任何`Number`子类型的元素。 - **非原始类型的泛型**:不能使用原始类型如`int`作为...
super T>、Set<? extends T>的声明,是什么意思呢?<? super T>表示包括T在内的任何T的父类,<? extends T>表示包括T在内的任何T的子类,下面我们详细分析一下两种通配符具体的区别。 extends List&...
在C#编程中,泛型是一种强大的工具,它允许我们编写可重用的代码,同时保持类型安全性和高效性。本文将深入探讨泛型类、泛型方法、泛型接口和泛型委托,并通过实例来阐述它们的应用。 首先,我们来看泛型类。泛型类...
泛型dao接口 :GenericDao, ID extends Serializable> 泛型作为DAO的通用接口 CRUD方法 dao接口 : PersonDAO extends GenericDao, Integer> 可以不写代码,方法已经在父类泛型dao里了,这里为了说明:可扩展添加 ...
泛型允许我们在类、接口和方法中使用类型参数,这样在编译时期就能检查类型匹配,减少运行时类型转换异常。 1. **泛型的基本概念** - 泛型的本质是在类、接口或方法中使用类型参数,让它们能够处理多种数据类型。...
"Java泛型extends关键字设置边界的实现" Java泛型extends关键字设置边界的实现是Java泛型系统中的一个重要概念。它允许开发者在泛型定义中指定类型参数的边界,从而限制了类型参数可以接受的类型范围。这种机制可以...
《C++泛型编程和设计模式应用》是Addison Wesley出版社推出的一本深入探讨C++编程技术的专业书籍,主要关注两个关键领域:泛型编程和设计模式。这本书旨在帮助开发者提高代码的重用性、灵活性和效率,通过利用C++...
在Java编程语言中,泛型(Generics)和方法是两个重要的概念,它们极大地提高了代码的类型安全性和可重用性。这篇博文将探讨这两个主题,并结合源码和工具进行深入解析。 首先,泛型是Java 5引入的一项重要特性,它...
Java泛型和集合是Java编程语言中的核心特性,它们极大地提高了代码的类型安全性和可读性,同时也简化了集合操作。本资料主要基于Maurice Naftalin和Philip Wadler合著的《Java泛型和集合》进行讨论。 首先,我们要...
Java泛型是Java SE 5.0引入的一个重要特性,它极大地增强了代码的类型安全性和可读性。泛型在编程中的应用广泛,特别是在集合框架中,使得我们可以在编译时就检查类型,避免了不必要的类型转换,并且提高了代码的...