泛型的實際應用示例

泛型的實際應用示例

1. 集合框架中的泛型

在Java的集合框架中,泛型被廣泛使用以確保類型安全并減少運行時錯誤。以下是一個使用泛型ArrayList的示例:

 

java

import java.util.ArrayList;
import java.util.List;
public class GenericCollectionsExample {
public static void main(String[] args) {
// 創建一個存儲String類型對象的ArrayList
List<String> stringList = new ArrayList<>();
stringList.add("Hello");
stringList.add("World");
// 嘗試添加非String類型對象將導致編譯錯誤
// stringList.add(123); // 編譯錯誤
// 遍歷并打印列表中的元素
for (String s : stringList) {
System.out.println(s);
}
}
}
2. 泛型方法和類

泛型方法和類允許我們編寫可重用的代碼,這些代碼可以處理多種數據類型。以下是一個泛型類的示例,該類表示一個“盒子”,可以容納任何類型的對象:

 

java

public class Box<T> {
private T item;
public Box(T item) {
this.item = item;
}
public T getItem() {
return item;
}
public void setItem(T item) {
this.item = item;
}
// 示例:使用Box類存儲和檢索Integer和String對象
public static void main(String[] args) {
Box<Integer> intBox = new Box<>(123);
System.out.println("Integer in box: " + intBox.getItem());
Box<String> stringBox = new Box<>("Hello");
System.out.println("String in box: " + stringBox.getItem());
}
}
3. 泛型接口

泛型接口與泛型類和泛型方法類似,允許我們定義類型安全的接口。以下是一個泛型接口的示例,它表示一個可以存儲和檢索數據的倉庫:

 

java

public interface Repository<T> {
T get(int id);
void put(int id, T item);
}
// 實現該接口的類需要指定具體的類型參數
public class StringRepository implements Repository<String> {
private Map<Integer, String> data = new HashMap<>();
@Override
public String get(int id) {
return data.get(id);
}
@Override
public void put(int id, String item) {
data.put(id, item);
}
}
// 使用StringRepository
public class RepositoryUsageExample {
public static void main(String[] args) {
Repository<String> repo = new StringRepository();
repo.put(1, "Hello");
System.out.println(repo.get(1)); // 輸出 "Hello"
}
}
4. 泛型通配符

在處理泛型時,有時我們需要表示未知的類型,或者表示一個類型的超集或子集。Java提供了通配符(wildcards)來實現這一點。以下是一個使用泛型通配符的示例:

 

java

import java.util.List;
public class WildcardExample {
// 接收任何類型的List作為參數
public static void printList(List<?> list) {
for (Object item : list) {
System.out.println(item);
}
}
public static void main(String[] args) {
List<String> stringList = Arrays.asList("a", "b", "c");
List<Integer> intList = Arrays.asList(1, 2, 3);
printList(stringList); // 輸出字符串
printList(intList); // 輸出整數
}
}

以上示例展示了泛型在Java編程中的實際應用,包括集合框架、泛型方法、泛型類和泛型接口的使用,以及泛型通配符的概念。這些示例可以幫助我們更好地理解和應用Java中的泛型特性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/37831.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37831.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/37831.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【面試題】信息系統安全運維要做什么

信息系統安全運維是確保信息系統穩定、可靠、安全運行的一系列活動和措施。 其主要包括以下幾個方面&#xff1a; 1.系統監控&#xff1a; 實時監測信息系統的運行狀態&#xff0c;如服務器的性能指標、網絡流量、應用程序的運行情況等。通過監控工具&#xff0c;及時發現系統…

企業數據治理的下一步是數據資產管理?

隨著信息技術的飛速發展和數字化轉型的深入推進&#xff0c;企業數據已成為驅動業務增長和創新的核心要素。當企業數據治理工作取得顯著成效后&#xff0c;如何進一步發揮數據的價值&#xff0c;實現數據資產的有效管理&#xff0c;成為企業面臨的重要課題。 數據治理的基石作用…

算法練習——函數、遞歸和遞推

在此記錄一些有關函數、遞歸和遞推的問題。所有題目均來自洛谷的題單能力提升綜合題單Part1 入門階段 - 題單 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) &#xff08;實際上都沒有用遞推做&#xff09; [NOIP2001 普及組] 數的計算 題目描述 給出正整數 n n n&#xf…

學習感悟丨在譽天學習數通HCIP怎么樣

大家好&#xff0c;我是譽天學員的徐同學&#xff0c;學習的數通HCIP課程。 在學校的時候&#xff0c;聽說下半年就要出去實習了&#xff0c;心中坎坷不安&#xff0c;現在我學到的知識遠遠不夠的。然后就想著學點東西充實一下自己的知識面和專業能力&#xff0c;有一次和同學談…

【漏洞復現】飛企互聯——SQL注入

聲明&#xff1a;本文檔或演示材料僅供教育和教學目的使用&#xff0c;任何個人或組織使用本文檔中的信息進行非法活動&#xff0c;均與本文檔的作者或發布者無關。 文章目錄 漏洞描述漏洞復現測試工具 漏洞描述 飛企互聯-FE企業運營管理平臺是一個基于云計算、智能化、大數據…

[圖解] 向量數據庫之何謂乘積量化器?

Product Quantization 在前面一節講解了向量數據庫索引相關的內容&#xff0c;那么本節將會講解其中壓縮方法的量化手段&#xff1a;乘積量化器。 簡單來說將向量的所有維度劃分為多個子空間&#xff0c;每個子空間一部分維度&#xff0c;然后每個子空間獨立去找最近距離。例如…

haproxy實現代理和負載均衡

HaProxy介紹&#xff1a; haproxy是法國開發者威利塔羅在2000年使用C語言開發的一個開源軟件&#xff0c;是一款具備高并發(一萬以上)、高性能的TCP和HTTP負載均衡器&#xff0c;支持基于cookie的持久性&#xff0c;自動故障切換&#xff0c;支持正則表達式及web狀態統計&…

Numpy array和Pytorch tensor的區別

1.Numpy array和Pytorch tensor的區別 筆記來源&#xff1a; 1.Comparison between Pytorch Tensor and Numpy Array 2.numpy.array 4.Tensors for Neural Networks, Clearly Explained!!! 5.What is a Tensor in Machine Learning? 1.1 Numpy Array Numpy array can only h…

arthas監控工具筆記(一)

文章目錄 啟動 math-game啟動 arthas查看 dashboard通過 thread 命令來獲取到math-game進程的 Main Class通過 jad 來反編譯 Main Class退出 arthas 界面linux服務器掛不上進程怎么辦? 核心表達式變量loader 本次調用類所在的 ClassLoaderclazz 本次調用類的 Class 引用method…

信息學奧賽初賽天天練-39-CSP-J2021基礎題-哈夫曼樹、哈夫曼編碼、貪心算法、滿二叉樹、完全二叉樹、前中后綴表達式轉換

PDF文檔公眾號回復關鍵字:20240629 2022 CSP-J 選擇題 單項選擇題&#xff08;共15題&#xff0c;每題2分&#xff0c;共計30分&#xff1a;每題有且僅有一個正確選項&#xff09; 5.對于入棧順序為a,b,c,d,e的序列&#xff0c;下列( )不合法的出棧序列 A. a&#xff0c;b&a…

螺旋矩陣問題C代碼

給定一個n行m列的二維數組&#xff0c;要求按順時針螺旋順序輸出矩陣中的所有元素&#xff0c;n和m小于等于10 如下圖是一個三行四列的螺旋矩陣 要求輸出 1 2 3 4 8 12 11 10 9 5 6 7 全局變量定義 int a[11][11]; int vis[11][11]; // 訪問標記數組關鍵代碼如下 int dx[] …

MySQL高級-MVCC-基本概念(當前讀、快照讀)

文章目錄 1、MVCC基本概念1.1、當前讀1.1.1、創建表 stu1.1.2、測試 1.2、快照讀 1、MVCC基本概念 全稱Multi-Version Concurrency Control&#xff0c;多版本并發控制。指維護一個數據的多個版本&#xff0c;使得讀寫操作沒有沖突&#xff0c;快照讀為MySQL實現MVCC提供了一個…

OpenCV cv::Mat到 Eigen 的正確轉換——cv2eigen

在進行計算機視覺項目時&#xff0c;我們經常需要處理相機位姿的變換。最近&#xff0c;我在項目中遇到了一個看似簡單但實際上頗具挑戰性的問題&#xff1a;從 OpenCV 的 cv::Mat 格式轉換到 Eigen 庫的格式。這個過程中遇到了一些問題&#xff0c;但最終找到了一個穩健的解決…

鏤空的文字?分享 1 段優質 CSS 代碼片段!

大家好&#xff0c;我是大澈&#xff01; 本文約 800 字&#xff0c;整篇閱讀約需 1 分鐘。 每日分享一段優質代碼片段。 今天分享一段優質 CSS 代碼片段&#xff0c;實現 CSS 文字鏤空的效果。 老規矩&#xff0c;先閱讀代碼片段并思考&#xff0c;再看代碼解析再思考&#…

nginx本地域名配置

修改hosts文件&#xff08;僅限本地測試&#xff09;&#xff1a; 在Windows上&#xff0c;hosts文件位于C:\Windows\System32\drivers\etc\hosts。 打開hosts文件&#xff0c;添加一行&#xff1a;127.0.0.1 xxx.com &#xff08;xxx.com為自己設定的域名&#xff09; 如果修…

Leetcode3190. 使所有元素都可以被 3 整除的最少操作數

Every day a Leetcode 題目來源&#xff1a;3190. 使所有元素都可以被 3 整除的最少操作數 解法1&#xff1a;遍歷 遍歷數組&#xff0c;累加最少操作數&#xff0c;即 min(num % 3, 3 - num % 3)。 代碼&#xff1a; /** lc appleetcode.cn id3190 langcpp** [3190] 使所…

uniapp+vue3開發微信小程序踩坑集

本文主要記錄使用uniappvue3開發微信小程序遇見的各種常見問題及注意點。&#xff08;持續更新&#xff09; 問題&#xff1a; 自定義組件為什么有些樣式加不上去 給自定義組件增加class的時候&#xff0c;有時候不生效有時候生效&#xff0c;一度讓我懷疑自己記憶錯亂。后來…

C++枚舉

C枚舉 枚舉的基礎用法不不再贅述枚舉的三點問題1、作用域問題解決思路1解決思路2 2、隱式轉換成int3、枚舉變量的實際類型無法明確指定 枚舉的基礎用法不不再贅述 枚舉的三點問題 1、作用域問題 舉個例子&#xff0c;顏色有blue代表藍色&#xff0c;心情有blue代表憂郁。 以…

mysql安裝配置教程

mysql安裝配置教程 MySQL是一個流行的關系型數據庫管理系統&#xff0c;用于存儲和管理數據。下面是簡要的MySQL安裝配置教程&#xff1a; 步驟1&#xff1a;下載MySQL 訪問MySQL官方網站&#xff08;https://dev.mysql.com/downloads/mysql/&#xff09;下載適合您操作系統…

Java冒泡排序實現及應用解析

Java冒泡排序實現及應用解析 冒泡排序是計算機科學中最基本的排序算法之一&#xff0c;盡管它的效率不是最高的&#xff0c;但由于其實現簡單&#xff0c;它在教學和某些特定場景下仍然具有不可替代的作用。本文將從Java語言的角度&#xff0c;深入探討冒泡排序的基本原理、實…