心法领悟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泛型对于编写高效、类型安全的代码至关重要。在这个压缩包...
#### 泛型方法与泛型类 除了泛型接口,Java还支持泛型类和泛型方法。泛型类允许我们创建具有类型参数的类,这样我们就可以在不同的上下文中使用相同的基本逻辑,而不需要重复代码。泛型方法则允许我们在不使用泛型...
JAVA泛型源代码实现以下功能:返回数组元素的最大值/最小值下标;判断数组元素是否按升序排列;T对象数组排序;二分法查找key元素;
泛型允许我们在代码中创建可重用的组件,这些组件可以与多种数据类型一起工作,而无需进行不必要的类型转换。这提高了代码的灵活性、性能和安全性。本教程将深入探讨C#泛型在“健康检查”场景中的应用。 首先,我们...
实例187 泛型化方法与最小值 238 实例188 泛型化接口与最大值 239 实例189 使用通配符增强泛型 240 实例190 泛型化的折半查找法 241 第9章 编程常用类 343 9.1 Calendar类的使用 244 实例191 简单的数字时钟 244 ...
在JavaPD-Ch06mao中,主要讨论了常见的类以及泛型类的应用,包括Date类、Calendar类、Math类与BigInteger类、数字格式化以及一系列泛型类的使用。 首先,我们来看Date类。Date类位于java.util包下,用于表示特定的...
在实例化或使用这些泛型类或方法时,我们可以提供具体的类型(类型实参)来替换这些类型参数。这样,编译器就能在编译期间检查类型一致性,确保类型安全。 例如,将原来的`List list = new ArrayList();`改为`List...
实例130 对象的序列化与反序列化 185 实例131 同时显示多个文件 187 实例132 生成zip压缩文件 189 实例133 解压缩zip文件 192 实例134 生成Excel文件 194 实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 ...
- **实例**:声明一个泛型类`Box<T>`,其中`T`是类型参数。 ```java public class Box<T> { private T t; public void set(T t) { this.t = t; } public T get() { return t; } } ``` #### 11.8 练习题 ...
- 分为实例初始化块和静态初始化块。 6. **构造方法的私有化** - 私有化构造方法阻止外部创建对象。 - 常用于单例模式实现。 7. **Singleton模式(单例模式)饿汉式和懒汉式** - 饿汉式在类加载时就创建对象。 ...
实例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...
- **子类实例化过程**:先调用父类构造器,再执行子类构造器 - **方法重写**:子类覆盖父类的方法 - **this和super关键字**: - `this`:引用当前对象实例 - `super`:引用父类对象实例 - **final修饰符**: -...