java特别基础之泛型
目的:面向对象对代码重用的支持,其中一个重要的机制就是泛型
泛型的使用方式:
如果除去对象的基本类型以外,实现方法是相同的,那么就可以用泛型实现来描 述这种基本的功能
两个细节:
1.使用时必须强转成正确的类型
2.不能使用基本类型,只有引用类型能与Object相容(但可以使用包装类)
自动装箱\拆箱:
如果一个int型量被传递到需要一个Integer对象的地方,那么编译器将在幕后插入个对Integer构造方法的调用,即自动装箱
如果一个Integer对象被放到需要int型量的地方,则编译器将在幕后插入一个对intValue()方法的调用,即自动拆箱
IS-A关系
public static Comparable findMax(Comparable[] arr){
int maxIndex = 0;
for (int i = 1; i < arr.length; i++)
if (arr[i].compareTo(arr[maxIndex]) > 0)
maxIndex = i;
return arr[maxIndex];
}
1.仅有compareTo方法但未宣称实现Comparable接口的对象不是Comparable的,他不具有IS-A关系
2.如果所传参数Comparable[]中存在不相容的对象,那么CompareTo()方法将抛出异常ClassCastException
3.基础类型能通过其包装类作为Comparable传递,因为包装类实现了Comparable
4.接口究竟是不是标准库的接口倒不是必需(意思是:泛型也对非标准java库接口适用!?)
5.方案不是总能行得通(之后有function 参数),如:包装类,但接口是用户自定义接口。又或者是个final类
协变数组类型:
数组兼容对象的类型
(非协变)每个数组都明确它所允许存储的对象的类型
协变性解析:
totalArea(Shape[] arr){} 此处用数组具有协变性
totalArea(Collection<Shape> arr){} 此处用集合协变性消失
totalArea(Collection<? extends Shape> arr){} 此处引入通配符重新使对象具有协变性
1.使类具有泛型
public class Tree <AnyType extends Comparable<? super AnyType>> {}
2.使某方法参数能使用泛型(不需要类是泛型):
public static<AnyType> AnyType findMax(){ return val; }
类型界限
1.public static<AnyType extends Comparable>
AnyType findMax(AnyType[] arr){}
(1.写法不太好)
现在假设Square继承Shape,可得Square实现Comparable<Shape>,可得Square IS-A Comparable<Shape>,但是不能得到Square IS-A Comparable<Square>
2.public static<AnyType extends Comparable<? super AnyType>> AnyType findMax(AnyType[] arr){}
这是为了使用Compable接口中的compareTo()方法
相关推荐
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
随后介绍了Java中的高级技术,详细讨论了其中的多线程、集合、泛型、RTTI等。这些基本知识介绍完毕之后,就进入到实际编程阶段,先后介绍了GUI程序设计、多媒体程序设计、数据库和网络程序设计,这些知识均以示例...
随后介绍了Java中的高级技术,详细讨论了其中的多线程、集合、泛型、RTTI等。这些基本知识介绍完毕之后,就进入到实际编程阶段,先后介绍了GUI程序设计、多媒体程序设计、数据库和网络程序设计,这些知识均以示例...
Java不仅可以用来开发大型的桌面应用程序,而且特别适合于Internet的应用开发。目前,很多新的技术领域都涉及到了Java语言,Java语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此Java语言也是学习...