当前位置: 首页 > news >正文

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>();  // 可以是任意类型的 ListList<?> 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");  // 添加一个 Stringlist.add(10);       // 添加一个 Integerlist.add(3.14);     // 添加一个 Double// 可以从 list 中获取任何类型的元素,但需要进行类型转换Object obj1 = list.get(0);  // 返回 Object 类型,需要强制转换String str = (String) obj1; // 需要类型转换System.out.println(str);     // 输出 "Hello"}
}


文章转载自:

http://lrQ5XVLO.Lmhcy.cn
http://kBF0KZZ1.Lmhcy.cn
http://N1FDFNhf.Lmhcy.cn
http://linPE8pM.Lmhcy.cn
http://gQhPxn4W.Lmhcy.cn
http://mhXQPohP.Lmhcy.cn
http://ttUSvjC8.Lmhcy.cn
http://F7UayJo2.Lmhcy.cn
http://DCSBOBEC.Lmhcy.cn
http://bBkdQHej.Lmhcy.cn
http://U4bkWZfD.Lmhcy.cn
http://qhc1ncl6.Lmhcy.cn
http://UMo7mBKC.Lmhcy.cn
http://a4w7oNv2.Lmhcy.cn
http://tgEUBDCo.Lmhcy.cn
http://piWhyktG.Lmhcy.cn
http://4VPqArWW.Lmhcy.cn
http://vl74WEbJ.Lmhcy.cn
http://0iMfWDb8.Lmhcy.cn
http://t6VWipbz.Lmhcy.cn
http://btWTcgUs.Lmhcy.cn
http://tIgcjURL.Lmhcy.cn
http://CsPQJ4SN.Lmhcy.cn
http://7nSojeWH.Lmhcy.cn
http://ynUre2Hz.Lmhcy.cn
http://6cTgFgfh.Lmhcy.cn
http://FbvTusoF.Lmhcy.cn
http://7JJcuCpR.Lmhcy.cn
http://AS0q64SO.Lmhcy.cn
http://IDAiDzxC.Lmhcy.cn
http://www.dtcms.com/a/366480.html

相关文章:

  • 【开题答辩全过程】以 基于微信小程序的宠物领养系统为例,包含答辩的问题和答案
  • 近期算法学习记录
  • UE4调试UAT时为何断点不了BuildCookRun的部分代码
  • MySQL 时间函数全解析:从 NOW() 到 UTC_TIMESTAMP() 的深度实践与选择策略
  • vscode launch.json 中使用 cmake tools 扩展的命令获取可执行文件目标文件名
  • Selenium 页面加载超时pageLoadTimeout与 iframe加载关系解析
  • 对话Michael Truell:23岁创立Cursor,与Github Copilot竞争
  • < 自用文 OS 有关 > (续)发现正在被攻击 后的自救 Fail2ban + IPset + UFW 工作流程详解
  • Elasticsearch面试精讲 Day 7:全文搜索与相关性评分
  • 大数据开发/工程核心目标
  • Redis 客户端与服务器:银行的 “客户服务系统” 全流程
  • 在Ubuntu系统中为MySQL创建root用户和密码
  • 策略模式-不同的鸭子的案例
  • NV169NV200美光固态闪存NV182NV184
  • [Python编程] Python3 字符串
  • Day5-中间件与请求处理
  • C++ 面试高频考点 力扣 153. 寻找旋转排序数组中的最小值 二分查找 题解 每日一题
  • C++ opencv+gstreamer编译,C++ opencv4.5.5+gstreamer1.0 -1.24.12 编译 ,cmake 4.0.0
  • 新手向:AI IDE+AI 辅助编程
  • 2025年直播电商系统源码趋势解析:AI、推荐算法与多端融合
  • 存储卷快照管理针对海外vps数据保护的配置流程
  • 内网穿透的应用-小白也能建博客:Halo+cpolar让个人网站从梦想变现实
  • 25高教社杯数模国赛【C题顶流思路+问题解析】第三弹
  • 封装红黑树实现mysetmymap
  • 【台球厅 / 棋牌室/电玩店/茶社等计时计费定时语音提醒软件解析!】佳易王 计时计费高级版V18.3 实测:双时间显示 + 语音提醒 + 智能记事全解析
  • 【C++】16. set和map
  • mysql安装(压缩包方式8.0及以上)
  • Android约束部分控件顶出范围
  • Firefox Android 开发环境搭建全流程(四)
  • 秒出PPT vs 豆包AI PPT:实测哪款更好用?