1.1简介
| 1. 使用场景:在定义的集合类的时候 不确定其数据类型 在实例集合的对象的时候确定其数据类型 |
| 泛型就是一个变量,变量用于来接收其数据类型 |
| 2. 使用泛型 |
| A.在实例化集合可以确定其数据类型 |
| B.语法: List<E> li = new Arraylist<E>(); |
| 例子: List<Student> li = new ArrayList<Student>() |
| C.注意点: |
| a.前后的泛型必须是一致的 |
| b.在jdk1.7之后出现了菱形的泛型 后面的数据类型可以省略 |
| 例如:List<Student> li = new ArrayList<>() |
| c.泛型必须是引用数据类型 不能是基本数据类型 |
| 3. 泛型好处: |
| a.避免多次进行强制类型转换 |
| b.将运行时的错误提前到编译期 |
| 4. 泛型使用符号 |
| 泛型使用的符号都是大写字母 所有大写字母都是可以使用 |
| 常用的符号: K V T E...... |
1.2 定义泛型类
| 1.语法: |
| 访问修饰符 class 类名 <泛型> { |
| 类中所有的成员都可以使用其泛型 |
| } |
| 2.例子: |
| public class MyList<T>{ |
| |
| } |
1.3 定义泛型方法
| 1.语法: |
| 访问修饰符 <T> 返回值类型 方法名称(T t) { |
| 方法体; |
| return 返回值 |
| } |
| 2.例子: |
| public <T> void showInfo(T t){ |
| |
| } |
| 3.说明 |
| a.普通成员方法与静态方法都可以加上泛型 |
| b.普通成员方法可以是类的泛型 |
| c.静态方法不能使用类的泛型 |
1.4 案例
定义一个方法,可以交换任意类型的数组的某两个元素
| package com.xxx; |
| |
| import java.util.Arrays; |
| |
| public class ChangeArray { |
| public static <T> T[] method(T[] arrays, int index1, int index2) { |
| T temp = arrays[index1]; |
| arrays[index1] = arrays[index2]; |
| arrays[index2] = temp; |
| return arrays; |
| } |
| } |
| |
| class TestChangeArray { |
| public static void main(String[] args) { |
| |
| String[] ss = ChangeArray.method(new String[]{"a", "b", "c", "d", "e", "f"}, 1, 4); |
| System.out.println(Arrays.toString(ss)); |
| } |
| } |
1.5 定义泛型接口
| 1.泛型接口 |
| a.实现类确定其泛型(数据类型) |
| 接口:public interface Iterator<E>{ |
| E next() |
| } |
| 实现类: |
| public final class Scanner implements Iterator<String>{ |
| public String next() |
| } |
| b.实现类也不确定其泛型(数据类型) |
| 接口: public interface List<E>{ |
| boolean add(E e) |
| } |
| 实现类: |
| public class ArrayList<E> implements List<E>{ |
| public boolean add(E e) |
| } |
| |
1.6 泛型通配符
| 1.泛型的通配符使用?来进行表示 ? 表示任意的数据类型 方法的通配符一般作为方法的参数使用 在实例化集合的时候 |
| 不能使用通配符 |
| 2.常用的通配符 |
| <? extends E> E本身或者是其子类 |
| <? super T> T本身或者是其父类类型 |
本文作者:Ritchie里其
本文链接:https://www.cnblogs.com/wang-zeyu/p/16793192.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步