Java中List<?>和List<Object>區(qū)別小結(jié)
List<?>和 List<Object> 是兩種在 Java 中用于表示泛型集合的方式,但它們有不同的含義和用法。下面是這兩者之間的區(qū)別:
1. List<?>
List<?> 是通配符類型(Wildcard Type)的一種表示方式。`?` 表示可以是任何類型,但無法對(duì)其進(jìn)行操作,例如獲取或設(shè)置元素的類型。
特點(diǎn):
`List<?>` 表示一個(gè)類型未知的 `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
// 以下行會(huì)報(bào)錯(cuò),因?yàn)椴荒芟?List<?> 中添加元素
// list1.add("Hello"); // 編譯錯(cuò)誤
// list1.add(10); // 編譯錯(cuò)誤
}
}2. List<Object>
`List<Object>` 是一個(gè)具體的類型參數(shù),它表示一個(gè)可以包含任意類型的對(duì)象的 `List`。由于所有 Java 類(包括自定義類)都繼承自 `Object`,所以 `List<Object>` 可以存儲(chǔ)任何類型的元素。
- `List<Object>` 是一個(gè) `List`,其中的元素必須是 `Object` 或其子類(即任何對(duì)象)。
- 你可以向 `List<Object>` 添加任何類型的元素,甚至是 `null` 或者不同類型的對(duì)象。
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"); // 添加一個(gè) String
list.add(10); // 添加一個(gè) Integer
list.add(3.14); // 添加一個(gè) Double
// 可以從 list 中獲取任何類型的元素,但需要進(jìn)行類型轉(zhuǎn)換
Object obj1 = list.get(0); // 返回 Object 類型,需要強(qiáng)制轉(zhuǎn)換
String str = (String) obj1; // 需要類型轉(zhuǎn)換
System.out.println(str); // 輸出 "Hello"
}
}
到此這篇關(guān)于Java中List<?>和List<Object>區(qū)別的文章就介紹到這了,更多相關(guān)Java List<?> List<Object>區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Java如何優(yōu)雅的實(shí)現(xiàn)字典翻譯
當(dāng)我們在Java應(yīng)用程序中需要對(duì)字典屬性進(jìn)行轉(zhuǎn)換返回給前端時(shí),如何簡單、方便、并且優(yōu)雅的處理是一個(gè)重要問題。在本文中,我們將介紹如何使用Java中的序列化機(jī)制來優(yōu)雅地實(shí)現(xiàn)字典值的翻譯,從而簡化開發(fā)2023-04-04
Java實(shí)現(xiàn)HTTP請(qǐng)求的4種方式總結(jié)
這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)HTTP請(qǐng)求的4種方式,在java開發(fā)中,經(jīng)常遇到需要調(diào)用第三方提供的接口服務(wù)的需求,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2023-08-08
SpringBoot項(xiàng)目中日志管理與調(diào)優(yōu)指南
在 Spring Boot 開發(fā)過程中,日志管理是開發(fā)者必須掌握的重要技能之一,合理的日志配置不僅能幫助開發(fā)者追蹤應(yīng)用程序的執(zhí)行流程、定位問題,還能提升應(yīng)用程序的可維護(hù)性,本文將詳細(xì)探討 Spring Boot 項(xiàng)目中日志管理的常見問題、解決方案以及最佳實(shí)踐2024-10-10
Spring RestTemplate使用方法示例總結(jié)
這篇文章主要介紹了Spring RestTemplate使用方法示例總結(jié),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-04-04
Java8新特性之StampedLock_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
本文從synchronized、Lock到Java8新增的StampedLock進(jìn)行對(duì)比分析,對(duì)Java8新特性之StampedLock相關(guān)知識(shí)感興趣的朋友一起看看吧2017-06-06
SpringBoot整合Javamail實(shí)現(xiàn)郵件發(fā)送的詳細(xì)過程
日常開發(fā)過程中,我們經(jīng)常需要使用到郵件發(fā)送任務(wù),比方說驗(yàn)證碼的發(fā)送、日常信息的通知等,下面這篇文章主要給大家介紹了關(guān)于SpringBoot整合Javamail實(shí)現(xiàn)郵件發(fā)送的詳細(xì)過程,需要的朋友可以參考下2022-10-10
Java從配置文件中獲取參數(shù)的三種常見場景和完整示例
在 Java 中從配置文件獲取參數(shù)是開發(fā)中的常見需求,不同配置文件格式和框架有不同的實(shí)現(xiàn)方式,以下是 最常用的 3 種場景+完整示例,覆蓋原生 Java 和 Spring Boot 項(xiàng)目,直接復(fù)用即可,需要的朋友可以參考下2026-01-01
JVM內(nèi)存溢出和內(nèi)存泄漏的區(qū)別及說明
這篇文章主要介紹了JVM內(nèi)存溢出和內(nèi)存泄漏的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02

