泛型(Generics)与集合(Collections)在 Java 等语言中关系密切,泛型主要是为了解决集合在类型安全与复用性方面的问题。
下面从概念、关系和示例几个层面说明。
泛型是参数化类型的机制,允许在定义类、接口或方法时使用“类型参数”。
class Box<T> {
private T value;
public void set(T value) { this.value = value; }
public T get() { return value; }
}
T 是一个类型参数,在使用时才确定具体类型。
集合是用于存储和操作一组对象的容器,例如:
ListSetMap在 Java 中,集合位于 java.util 包中。
早期 Java(JDK 1.4 及以前)集合不使用泛型:
List list = new ArrayList();
list.add("hello");
list.add(123);
String s = (String) list.get(0); // 需要强制转换
Integer i = (Integer) list.get(1);
问题:
引入泛型后,集合可以指定元素类型:
List<String> list = new ArrayList<>();
list.add("hello");
// list.add(123); // 编译期直接报错
✅ 优点:
List<Integer> list = new ArrayList<>();
list.add(10);
int value = list.get(0); // 自动拆箱
Map<String, Integer> map = new HashMap<>();
map.put("age", 18);
int age = map.get("age");
Set<Student> set = new HashSet<>();
List<String> a = new ArrayList<>();
List<Integer> b = new ArrayList<>();
System.out.println(a.getClass() == b.getClass()); // true
集合用于存储数据,泛型用于约束集合中数据的类型。
✅ 集合 + 泛型 =
类型安全 + 易维护 + 减少运行时错误
如果你愿意,我也可以用 C# 的泛型集合 或 对比 Java 与 C++ 模板 来进一步解释。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。