JavaSE教程
Java基础
Java简介
搭建Java开发环境
第一个Java程序
数据类型和变量
运算符和表达式
控制流程语句
数组和字符串
Java方法和方法调用
Java面向对象编程
Java类和对象
Java继承
Java封装
Java多态
Java异常处理
Java集合框架
Java高级特性
Java泛型
Java注解
Java文件I/O和NIO
Java多线程编程
Java网络编程
Java图形用户界面
Java应用开发
Java数据库连接(JDBC)
Java Web应用
-
+
首页
Java泛型
### 泛型的概念 Java泛型是在Java SE 5中引入的一种强大特性,它允许在编译时提供类型安全。泛型使得集合类可以存储任意类型的数据,同时在编译时检查类型,避免了类型转换的麻烦和运行时的`ClassCastException`。 泛型的本质是参数化类型(Parameterized Type),即在编译时不确定具体的类型,而是在运行时根据传入的参数确定类型。 ### 使用泛型 **集合类使用泛型**: ```java // 使用泛型定义List List<String> stringList = new ArrayList<>(); stringList.add("Moonshot"); // 使用泛型定义Map Map<String, Integer> scoreMap = new HashMap<>(); scoreMap.put("Kimi", 95); ``` **自定义泛型类或接口**: ```java // 定义一个泛型类 public class Box<T> { private T t; public void set(T t) { this.t = t; } public T get() { return t; } } // 使用泛型类 Box<String> stringBox = new Box<>(); stringBox.set("Hello"); String value = stringBox.get(); ``` ### 泛型的限制 1. **不能直接实例化泛型类型**: 不能使用`new List<>`这样的代码直接创建泛型类型的实例,但可以使用`new ArrayList<>()`。 2. **不能使用基本数据类型作为泛型类型参数**: 泛型类型参数必须是对象类型,不能使用`int`、`double`等基本数据类型。 3. **不能创建泛型数组**: 不能直接创建泛型类型的数组,如`List<String>[]`,但可以使用`ArrayList<String>[]`。 4. **不能实例化泛型数组**: 不能使用`new T[10]`这样的代码创建泛型数组,因为泛型类型`T`在运行时被擦除。 5. **不能捕获泛型异常**: 不能捕获泛型类型的异常,因为泛型信息在运行时被擦除。 6. **泛型类型擦除**: Java泛型在运行时会被擦除,即泛型信息不会保留在字节码中,这可能会导致一些限制和问题。 泛型提供了一种方式来编写类型安全的代码,同时避免了类型转换的需要,使得代码更加简洁和安全。通过使用泛型,我们可以编写出更加灵活和可重用的代码。
wwbang
2024年12月25日 16:41
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码