- 浏览: 48670 次
- 性别:
- 来自: 北京
文章分类
最新评论
1.类型参数
public class Holder<T>
不用特别指定具体类型。
2.返回多个对象
元组:将一组对象存在单一对象。也称为数据传送对象。
public class Tuple<A,B>
3.基本类型无法作为类型参数。
4.泛型方法
原生类型<T>
public <T> void f<T x> 将泛型参数列表置于返回值之前。
public <T> void f<T...x>泛型可变参数,不用显式填充数组x
public static <K,V> Map<K,V> map(){
return new HashMap<K,V>();
}
Map<String,List<String>> sls = New.map();这就是类型参数推断
New.map();//不能编译,不知道类型
New.<String,List<String>>map();//显式类型说明
5.擦除
Class c1 = new ArrayList<String>().getClass();
Class c2 = new ArrayList<Integer>().getClass();
c1==c2//true
Arrays.toString(c1.getTypeParameters())//E
在泛型代码内部,无法获得任何有关泛型参数类型的信息。
6.边界
在编写泛型代码时,都要记住它只是一个Object,严格来说是是它的第一边界。
任何在运行时需要知道确切类型信息的操作都将无法工作。
T extends Hasf 那么Hasf就是T的第一边界。
7.通配符
一个数组new Apple[]可以持有Apple及其子类。
List<Fruit> flist = new ArrayList<Fruit>();//不能写成new ArrayList<Apple>(),
Apple的List不是Fruit的List,Apple的List可以持有Apple及其子类型,Fruit的list则可以持有任何类型的Fruit。
List<? extends Fruit> flist = new ArrayList<Apple>();//什么都不能添加,下界不确定。
从编译器的角度考虑,它要持有Fruit或Fruit的某种子类型,但不知道是那种类型,所以就无法安全的向其中添加任何对象。
这里虽然指明为Apple,但是编译器并不知道,添加任何类型都是不安全的。
List<? super Apple> flist ;//可以添加Apple及其子类,其下界就是Apple
List<? super T>可以,<T super Apple>不合法,T是泛型参数,有可能传错。
无界通配符
List<Integer> li = new ArrayList<Integer>;
li.add(new Integer(12));
List<?> lu = li;
lu.add(new Integer(43));//error
对于lu, 编译器不能对List的类型参数做出足够严密的推理。
add方法类型安全,但是lu擦除并不能确定所加对象的类型。
引入类型通配符,可以从中检索元素,但是不能添加元素。修改功能的方法比不修改方法需要更多的类型信息。
lu.clear();可以运行,因为它不依赖类型安全。
8.泛型问题
a.不能保存基本类型
不能创建ArrayList<int>,可以用ArrayList<Integer>但是性能低。
b.一个类不能实现同一个泛型接口的两种变体
如interface Fruit<t>{} 那么
Class A extends Fruit<Apple> implements Fruit<Orange>{};//error
擦除会使两个接口相同。
c.带有泛型参数的转型和instanceof不会有任何效果
d.重载
void f(List<T> v){}
void f(List<W> v){}
擦除使两个方法相同。
9.动态类型安全
容器的ArrayList<Dog> dl = new ArrayList<Dog>();
虽然有类型安全,但还是有可能加入错的数据。
@SupressWarning("nochecked")
public void addCat(List dogl){
dogl.add(new Cat());
}
addCat(dl);//这是可以的。
所以List<Dog> dl2 = Collections.checkList(dl,Dog.class);//加入类型检查
持续更新中。。。。
发表评论
-
对代理模式与Java动态代理类的理解(二转)
2010-09-13 15:18 28471. 代理模式 代理模式的作用是:为其他对象提供一种代理以控制 ... -
20.注解
2010-05-04 22:02 9151.注解 三种内置标准 @Override 确保覆盖超类方 ... -
19.枚举类型
2010-05-04 22:00 7811.静态导入enum public enum Spicine ... -
18.java IO 系统
2010-05-04 21:56 6281.File类 File既可以代表一个文件,又可以是一组 ... -
17.容器的深入研究
2010-05-04 21:52 7901.填充容器 List<String> list ... -
16.数组
2010-05-04 21:51 6111.数组和其他容器的区别效率,类型和保存基本类型的能力。效率是 ... -
14.类型信息
2010-05-04 21:48 6421.rtti Runtime Type Information ... -
13.字符串
2010-05-04 21:43 6991.String对象不可变string一旦创建则不可改变,任何 ... -
12.通过异常处理错误
2010-05-04 21:38 7531.异常参数所有标准异常类都有两个构造器:一个是默认的,另一个 ... -
10.内部类
2010-05-04 21:08 6761.内部类定义将一个类的定义放在另一个类的定义内部,内部类了解 ... -
16.数组
2010-01-03 23:15 6701.数组和其他容器的区 ... -
5.初始化和清理
2010-01-03 23:14 697这章重点讲了构造器 1. ... -
4.控制执行流程
2010-01-03 23:10 5621.foreach 2.goto 不提倡 3.switch ... -
3.操作符
2010-01-03 23:09 827这章很基础,算术,逻辑,关系操作符,我们都很熟悉。其中需要注意 ... -
2.一切都是对象
2010-01-03 23:07 6421.对象存在什么地方。a.寄存器c和c++允许操作,java不 ... -
9.接口-java笔记
2009-12-21 00:26 6641.抽象类 抽象是普通类 ... -
8.多态--java笔记
2009-12-16 18:01 6461.绑定 定义:将一个方法调用同一个方法主体关联起来称作绑定。 ... -
11.持有对象--java笔记
2009-11-16 00:35 1153又看了java思想的第四版得第11章,记一下关键点留个纪念,呵 ... -
7.复用类
2009-11-04 00:07 623复用包括组合和继承,及中庸之道代理。 1.继承 初 ... -
6.访问权限控制
2009-10-14 01:06 666这一章的有以下这么几点: 1.package:包,名字空间, ...
相关推荐
泛型(共15页).ppt 推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 10.异常处理(共24页).ppt 推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 11.AWT编程(共46页).ppt 推荐优质Java课程 疯狂...
目录 1. 泛型简介 2 1.1.理解泛型 2 1.2.泛型简介 3 2.泛型的优点 3 3.泛型类型参数 4 ...5.泛型类 9 ...6.泛型接口 11 ...7.泛型方法 13 ...8.泛型委托 15 9.泛型代码中的默认关键字 17 10.泛型和属性 18
15.泛型常用特点 16.Java创建对象有几种方式 17.有没有可能两个不相等的对象有相同的hashcode 18.深拷贝和浅拷贝的区别是什么 19.final有哪些用法 20.static都有哪些用法 21.3*0.1 == 0.3返回值是什么 22.a=a+b与a+=...
Jdk15泛型的实现
15. 十四 标准I/O流与文件 15.1. 对文件的操作 15.2. 处理跨平台性 15.3. 对象的序列化接口 15.4. I/O流基础 15.5. 流的分类 15.6. I/O输入输出 16. 十五 网络编程 16.1. 网络基础知识 16.2. TCP Socket...
6.泛型 7.面向对象编程 8.函数式编程 9.协程 10.Kotlin与Java互操作 11.使用Kotlin集成SpringBoot开发Web服务端 12.使用Kotlin集成Gradle开发 13.使用Kotlin和Anko的Android开发 14.使用 Kotlin DSL 15.Kotlin 文件...
9. 泛型 10. 枚举 11. 类型推断 12. 类型兼容性 13. 高级类型 14. Symbols 15. 迭代器和生成器 16. 模块 17. 命名空间 18. 命名空间和模块的区别 19. 模块解析 20. 声明合并 21. 类型声明 22. JSX 23. 装饰器 24. ...
2009年1月C++的试题和答案1. A 2. B 3. D 4. D 5. A 6. D 7. C 8. C 9. B 10....11. D 12.... B 15.... 22....23. Hex:64 24....25. main 26.complex<float> num(2.2,1.3)或...35. 泛型算法 36. 派生 37. push_back(const T&) 38. new
15. 十四•标准I/O流与文件 15-46 15.1. 对文件的操作 15-46 15.2. 处理跨平台性 15-46 15.3. 对象的序列化接口 15-47 15.4. I/O流基础 15-47 15.5. 流的分类 15-47 15.6. I/O输入输出 15-48 16. 十五•网络编程 16-...
15. 十四•标准I/O流与文件 15-46 15.1. 对文件的操作 15-46 15.2. 处理跨平台性 15-46 15.3. 对象的序列化接口 15-47 15.4. I/O流基础 15-47 15.5. 流的分类 15-47 15.6. I/O输入输出 15-48 16. 十五•网络编程 16-...
17.泛型.playground 18.异常错误.playground 19.断言.playground 1初识.playground 20.自动引用计数(strong,weak,unowned).playground 21.检测API.playground 22.?对象的标识.playground 23.注释.playground 24.?元...
6.泛型编程; 7.模板元编程; 8.预处理元编程; 9.并发编程; 10.数学和数字; 11.排错和测试; 12.数据结构; 13.图像处理; 14.输入输出; 15.跨语言混合编程; 16.内存管理; 17.解析; 18.编程接口; 19.杂项; ...
10.4.泛型.pdf 10.5.异常的捕获及处理.pdf 11.1.Java常用类库(上).pdf 11.2.多线程.pdf 12.Java常用类库(下).pdf 13.Java IO(上).pdf 14.Java IO(下).pdf 15.Java类集框架.pdf 16.1.Java反射机制.pdf 16.2.枚举....
泛型24道/异常8道/IO与NIO15道/反射11道/序列化11道/注解2道/多线程&并发108道/JVM87道/MYSql 83道/redis50道/Memcached24道/MongDB95道/Spring131道/SpringBoot92道/SpringCloud35道/RabbitMQ32道/Dubbo40道/...
15 Standard C++ IOStreams and Locales: Advanced Programmer's Guide and Reference 16 Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library 17 Generic Programming and the ...
泛型(共15页).ppt 推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 10.异常处理(共24页).ppt 推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 11.AWT编程(共46页).ppt 推荐优质Java课程 疯狂...
类的析构(3) 15.类的修饰符 16.类型转换(1) 17.类型转换(2) 18.属性(1) 19.属性(2) 20.索引器(1) 21.索引器(2) 22.索引器(3) 23.索引器(4) 24.委托(1) 25.委托(2) 26.事件(1) 27.事件(2) 28.虚方法 29.抽象类 30...
类的析构(3) 15.类的修饰符 16.类型转换(1) 17.类型转换(2) 18.属性(1) 19.属性(2) 20.索引器(1) 21.索引器(2) 22.索引器(3) 23.索引器(4) 24.委托(1) 25.委托(2) 26.事件(1) 27.事件(2) 28.虚方法 29.抽象类 30...
01.Java语言概述 02.理解结构化程序设计_理解面向对象 03.数据类型和运算符 ...09.泛型 10.异常处理 11.AWT编程 12.Swing编程 13.JDBC编程 14.Annotation 15.输入输出 16.多线程 17.网络编程 18.类加载与反射