心法领悟187:泛型类型参数的限定。
限定有两种情况:
- 小于某个范围
- 大于某个范围
本实例使用的是第一种。“范围”既可以是一个类,也可以是一个接口,还可以是类和接口的组合。对于组合的情况,需要将类放在第一位,并使用&进行分隔。
注意:当泛型参数类型被限制为接口的子类型时,也使用extends关键字。
使用下面的语法将T限制为Comparable接口的实现类。
<T extends Comparable<T>> T
package com.mingrisoft.generic; public class GenericComparison { public static <T extends Comparable<T>> T getMin(T[] array) { if (array == null || array.length == 0) { return null; } T min = array[0]; for (int i = 1; i < array.length; i++) { if (min.compareTo(array[i]) > 0) { min = array[i]; } } return min; } }
package com.mingrisoft.generic; public class GenericComparisonTest { public static void main(String[] args) { String[] books = { "Java从入门到精通(第2版)", "C#编程宝典", "细说Java", "视频学Java" }; System.out.println("明日科技新书列表:"); for (String book : books) { System.out.println(book); } String min = GenericComparison.getMin(books); System.out.println("按名称排序最小的第一本书:"); System.out.println(min); } }
运行结果:
明日科技新书列表: Java从入门到精通(第2版) C#编程宝典 细说Java 视频学Java 按名称排序最小的第一本书: C#编程宝典
相关推荐
JAVA泛型源代码实现以下功能:返回数组元素的最大值/最小值下标;判断数组元素是否按升序排列;T对象数组排序;二分法查找key元素;
实例187 泛型化方法与最小值 238 实例188 泛型化接口与最大值 239 实例189 使用通配符增强泛型 240 实例190 泛型化的折半查找法 241 第9章 编程常用类 343 9.1 Calendar类的使用 244 实例191 简单的数字时钟 244 ...
实例130 对象的序列化与反序列化 185 实例131 同时显示多个文件 187 实例132 生成zip压缩文件 189 实例133 解压缩zip文件 192 实例134 生成Excel文件 194 实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 ...
实例130 对象的序列化与反序列化 185 实例131 同时显示多个文件 187 实例132 生成zip压缩文件 189 实例133 解压缩zip文件 192 实例134 生成Excel文件 194 实例135 读取Excel文件中的内容 198 ...
实例130 对象的序列化与反序列化 185 实例131 同时显示多个文件 187 实例132 生成zip压缩文件 189 实例133 解压缩zip文件 192 实例134 生成Excel文件 194 实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 ...
实例130 对象的序列化与反序列化 185 实例131 同时显示多个文件 187 实例132 生成zip压缩文件 189 实例133 解压缩zip文件 192 实例134 生成Excel文件 194 实例135 读取Excel文件中的内容 198 ...
实例130 对象的序列化与反序列化 185 实例131 同时显示多个文件 187 实例132 生成zip压缩文件 189 实例133 解压缩zip文件 192 实例134 生成Excel文件 194 实例135 读取Excel文件中的内容 198 实例136 生成PDF...
主要介绍了Java 泛型的相关资料,并附简单实例代码,需要的朋友可以参考下
《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用...
9.5 Java语言国际化时间获取与计算238 9.6 Random类和Math类240 9.7 本章习题243 第10章 10.1 异常概述246 10.2 使用try和catch捕获异常..2 50 10.3 使用throw和throws引发异常252 10.4 finally关键字255 10.5 ...
16.1.5 控制实例化 597 16.1.6 效率与灵活性 599 16.2 模板实参推断 600 16.2.1 类型转换与模板类型参数 601 16.2.2 函数模板显式实参 603 16.2.3 尾置返回类型与类型转换 604 16.2.4 函数指针和实参...
16.1.5 控制实例化 597 16.1.6 效率与灵活性 599 16.2 模板实参推断 600 16.2.1 类型转换与模板类型参数 601 16.2.2 函数模板显式实参 603 16.2.3 尾置返回类型与类型转换 604 16.2.4 函数指针和实参...
DateFormat是一个抽象类,不能直接实例化,可以使用下表中的静态方法得到DateFormat的对象。 方法 说明 getDateInstance() 返回默认地区,默认格式的关于日期的DateFormat对象。 getDateInstance(int) 返回指定...
1.7 学习方法 1 2 语言特性 3 2.1 模板 3 2.2 typename 3 2.3 模板类的拷贝构造函数 3 2.4 基本类型数据初始化 3 2.5 异常处理 4 2.6 命名空间 4 2.7 using声明 4 2.8 namespace std 4 2.9 explicit关键字 5 2.10 新...