【有书共读】《疯狂JAVA讲义》读书笔记09
这周学习了java疯狂讲义第九章,我有以下几点总结:
1. 把一个对象存储到集合里之后,集合会忘记这个对象的数据类型,当再次取出该对象时,该对象的编译类型就变成了Object类型。
2. 泛型的使用:在集合接口、类后面增加尖括号,尖括号里存放放一个数据类型,表明这个集合接口、集合类只能保存特定类型的对象。
3. 从Java7开始,允许在构造器后不需要带完整的泛型信息,值需要给出一对尖括号即可。
4. 在定义接口、类时声明类型形参,类型形参在整个接口、类内部可以当成类型来使用,几乎所有可以使用普通类型的地方都可以使用这种类型参数。
5. 创建了带泛型声明接口、父类之后,为接口创建实现类,从父类派生子类时,不能再包含类型形参,应该传入实际的类型。
6. 在静态方法、静态初始化块、或者静态变量声明和初始化中不允许使用类型形参。
7. 类型通配符,为了表示各种泛型的父类,可以使用类型通配符(?),将一个问号作为类型实参传给List集合,它的元素类型可以匹配任何类型。
8. 设置类型通配符的上限,java List<? extends Shape>,此处的问号代表一个未知类型,但是这个未知类型一定是Shape类型的子类型或本身。
9. 泛型方法,java修饰符 <T, S> 返回值类型 方法名(形参列表){方法体}
10.设置类型通配符的下限,javaList<? Super Shape>,此处的问号代表一个未知类型,但是这个未知类型一定是Shape类型的父类型或本身。