Python知識分享網(wǎng) - 專業(yè)的Python學(xué)習網(wǎng)站 學(xué)Python,上Python222
Java泛型設(shè)計及其PECS原則解析
匿名網(wǎng)友發(fā)布于:2024-12-07 10:33:33
(侵權(quán)舉報)
(假如點擊沒反應(yīng),多刷新兩次就OK!)

Java泛型設(shè)計及其PECS原則解析 圖1

 

 

資料內(nèi)容:

 

背景
在沒有泛型之前,必須使用Object編寫適用于多種類型的代碼,想想就令人頭疼,并且非常的不安
全。同時由于數(shù)組的存在,設(shè)計者為了讓其可以比較通用的進行處理,也讓數(shù)組允許協(xié)變,這又為
程序添加了一些天然的不安全因素。為了解決這些情況,Java的設(shè)計者終于在Java5中引入泛型,
然而,正是因為引入泛型的時機較晚,為了兼容先前的代碼,設(shè)計者也不得不做出一些限制,來讓
使用者(也就是我們)以難受換來一些安全。
 
優(yōu)點
簡單來說,泛型的引入有以下好處:
程序更加易讀
安全性有所保證
以ArrayList舉例,在增加泛型類之前,其通用性是用繼承來實現(xiàn)的,ArrayList類只維護一個
Object引用的數(shù)組,當我們使用這個工具類時,想要獲取指定類型的對象必須經(jīng)過強轉(zhuǎn):
 
1 import java.util.ArrayList;
2 import java.util.Date;
3
4 public class Main {
5 public static void main(String[] args) {
6 ArrayList list = new ArrayList();
7 //強制類型轉(zhuǎn)換
8 String res = (String) list.get(0);
9 //十分不安全的行為
10 list.add(new Date());
11 }
12 }

 

這種寫法在編譯類型時不會報錯,但一旦使用get獲取結(jié)果并試圖將Date轉(zhuǎn)換為其他類型時,很有
可能出現(xiàn)類型轉(zhuǎn)換異常,為了解決這種情況,類型參數(shù)應(yīng)用而生。