Java中List<?>和List<Object>区别小结
List<?>和 List<Object> 是两种在 Java 中用于表示泛型集合的方式,但它们有不同的含义和用法。下面是这两者之间的区别:
1. List<?>
List<?> 是通配符类型(Wildcard Type)的一种表示方式。`?` 表示可以是任何类型,但无法对其进行操作,例如获取或设置元素的类型。
特点:
`List<?>` 表示一个类型未知的 `List`,其中元素的类型可以是任意的(例如 `List<Integer>`、`List<String>` 等)。
- 只能从 `List<?>` 中读取元素,但无法向其中添加元素(除了 `null`)。
import java.util.List;
import java.util.ArrayList;
public class WildcardExample {
public static void main(String[] args) {
List<?> list1 = new ArrayList<String>(); // 可以是任意类型的 List
List<?> list2 = new ArrayList<Integer>();
// 你可以读取元素,但不能添加非 null 的元素
Object obj = list1.get(0); // 获取元素,返回类型为 Object
// 以下行会报错,因为不能向 List<?> 中添加元素
// list1.add("Hello"); // 编译错误
// list1.add(10); // 编译错误
}
}2. List<Object>
`List<Object>` 是一个具体的类型参数,它表示一个可以包含任意类型的对象的 `List`。由于所有 Java 类(包括自定义类)都继承自 `Object`,所以 `List<Object>` 可以存储任何类型的元素。
- `List<Object>` 是一个 `List`,其中的元素必须是 `Object` 或其子类(即任何对象)。
- 你可以向 `List<Object>` 添加任何类型的元素,甚至是 `null` 或者不同类型的对象。
import java.util.List;
import java.util.ArrayList;
public class ObjectListExample {
public static void main(String[] args) {
List<Object> list = new ArrayList<>();
list.add("Hello"); // 添加一个 String
list.add(10); // 添加一个 Integer
list.add(3.14); // 添加一个 Double
// 可以从 list 中获取任何类型的元素,但需要进行类型转换
Object obj1 = list.get(0); // 返回 Object 类型,需要强制转换
String str = (String) obj1; // 需要类型转换
System.out.println(str); // 输出 "Hello"
}
}
到此这篇关于Java中List<?>和List<Object>区别的文章就介绍到这了,更多相关Java List<?> List<Object>区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
利用SpringBoot实现一个基于本地代理模式的RPC调用框架
虽然Dubbo、gRPC等成熟框架已经为我们提供了完整的RPC解决方案,但理解其底层原理并动手实现一个简化版本,对提升我们的技术理解深度很有帮助,下面我们就来看看如何使用SpringBoot实现一个基于本地代理模式的RPC调用框架吧2025-07-07
springboot 整合 langchain4j 实现简单的问答功能
最近在学习langchain4j,本文将介绍如何使用langchain4j快速实现一个简单的问答功能,结合实例代码给大家介绍的非常详细,需要的朋友参考下吧2025-04-04
Spring Boot源码实现StopWatch优雅统计耗时
这篇文章主要为大家介绍了Spring Boot源码实现StopWatch优雅统计耗时,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-07-07
Spring容器的创建过程之如何注册BeanPostProcessor详解
关于BeanPostProcessor 各位一定不陌生,今天整理的这篇文章总结了如何注册BeanPostProcessor,文中有非常详细的图文示例,需要的朋友可以参考下2021-06-06


最新评论