Java Generics and Collections-2.2
2.2 Wildcards with extends
前面介绍过List<Integer>不是List<Number>的子类,即前者不能替换后者,
java使用? extends [classname]语法,即List<Integer>
可以替换 List<? extends Number>。
看两段代码:
package java_generics_collections.chap2;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
/**
* Created by jintaox on 2016/3/21.
*/
public class Test_2_1 {
@Test
public void test_01() throws Exception {
List<Integer> ints = new ArrayList<>();
ints.add(3);
ints.add(4);
// List<Number> nums = ints;//compile error
// nums.add()
}
}
这是上一节介绍的内容,即List<Integer> 不能替换
List<Number>,语法编译不过,原因也介绍了。
下面这段代码:
package java_generics_collections.chap2;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
/**
* Created by jintaox on 2016/3/22.
*/
public class Test_2_2 {
@Test
public void test_01() throws Exception {
List<Integer> ints = new ArrayList<>();
ints.add(1);
ints.add(12);
List<? extends Number> nums = ints;//compile pass
// nums.add(2.3);//compile error
}
}
可以看出List<Integer> 可以替换
List<? extends Number>
但是nums.add(2.3)是不允许的,还是那个原因,nums调用的实际是ints的add()方法(多态),
即add(Integer i),因此,此处放一个double是不能编译通过的。
好了。
加油,我要做技术专家。
Java Generics and Collections-2.2的更多相关文章
- python 中的sort 和java中的Collections.sort()函数的使用
x=[1,2,3] x.sort()对的,x这个都变了 y=x.sort()错误 y=sorted(x)对的,x拍好序的一个副本 python中用匿名函数和自定义函数排序:(很奇怪的是比较函数返回的是 ...
- Java Concurrency - Concurrent Collections
Data structures are a basic element in programming. Almost every program uses one or more types of d ...
- thinking in java Generics Latent typing
The beginning of this chapter introduced the idea of writing code that can be applied as generally a ...
- Thinking in java——Generics
Ordinary classes and methods work with specific types: either primitives or class types. If you are ...
- 【Java】Java中的Collections类——Java中升级版的数据结构【转】
一般来说课本上的数据结构包括数组.单链表.堆栈.树.图.我这里所指的数据结构,是一个怎么表示一个对象的问题,有时候,单单一个变量声明不堪大用,比如int,String,double甚至一维数组.二维数 ...
- Java中的Collections类
转载:https://blog.csdn.net/yangxingpa/article/details/80515963 从[Java]Java中的Collections类——Java中升级版的数据结 ...
- Java Generics and Collections-2.3
2.3 Wildcards with super 这里就直接拿书上的例子好了,这是Collections里面的一个方法: public static <T> void copy(List& ...
- Java Generics and Collections-8.1
8.1 Take Care when Calling Legacy Code 通常,泛型都是在编译时检查的,而不是运行时.便意识检查可以提早通知错误,而不至于到运行时才出问题. 但有时后编译时检查不一 ...
- java List 排序 Collections.sort() 对 List 排序
class User { String name; String age; public User(String name,String age){ this.name=name; this.a ...
- 黑马程序员——JAVA基础之Collections和Arrays,数组集合的转换
------- android培训.java培训.期待与您交流! ---------- 集合框架的工具类: Collections : 集合框架的工具类.里面定义的都是静态方法. Col ...
随机推荐
- MesaSQLite数据库的简单使用方法
前言部分 本文非原创 文章摘自:http://m.blog.csdn.net/blog/wsxzk123/17282325 数据库工具:MesaSQLite 一.创建数据库 1.创建数据库 MesaS ...
- java使用正则从爬虫爬的txt文档中提取QQ邮箱
我的需求是从一堆文档中提取出qq邮箱,写了这篇帖子,希望能帮助和我有一样需求的人,谢谢!...... import java.io.BufferedReader; import java.io.Fil ...
- 基于Eclipse的Hadoop应用开发环境配置
基于Eclipse的Hadoop应用开发环境配置 我的开发环境: 操作系统ubuntu11.10 单机模式 Hadoop版本:hadoop-0.20.1 Eclipse版本:eclipse-java- ...
- JDK源码分析:hashCode()方法
提问: 1.hashCode()源码是怎么实现的. 2.hashCode()是为了配合基于散列的集合而设计的 3.hash数据结构,如何做到存取的时间复杂度为O(1)的.{函数算>逐个比较} 答 ...
- 魔术方法__sleep 和 __wakeup
感觉序列化和反序列化用得倒是比较少了,而json_encode和json_decode用得相对多,都是转化成串,进行入库.传输等.json更方便,但是序列化和反序列化结合这两个魔术方法使用倒还行< ...
- FilterDispatcher已被标注为过时解决办法 >>> FilterDispatcher <<< is deprecated!
一些struts2的教程都是比较早的,当我们基于较新版本的struts2来实现代码的时候,往往会出现一些问题.比如这个警告:FilterDispatcher isdeprecated! 在web.xm ...
- Java基础学习 -- 异常
当异常发生时,原本要接着执行的代码不再执行,转而让其他部分的代码来处理.如果没有代码负责处理,控制台会报告异常. 异常出现时的执行机制: 异常机制最大的好处是:清晰地分开了 正常的业务逻辑 和 遇到情 ...
- 【翻译】jQuery是有害的
原文:http://lea.verou.me/2015/04/jquery-considered-harmful/**(第一次翻译,望大家多批评指正) jQuery是有害的 嗨,我总想写一个“X”是有 ...
- CSS的一些基础知识
<!DOCTYPE html><html><head><meta charset="utf-8"><title>标题&l ...
- GCD深入学习(1)dispatch_semaphore
dispatch_semaphore信号量是一种基于计数器的一种多线程同步机制 在多个线程访问共有资源的时候,会因为多线程的特性引发数据出错. - (void)addData { dispatch_q ...