主要總結的內容萬用字元、受限泛型、泛型與子類繼承的限制
一.萬用字元「?」
在開發中物件的引用傳遞是最常見的,如果在泛型類的操作中,在進行引用傳遞的時候泛型型別必須匹配才可以傳遞,否則無法傳遞
我們看如下程式:
可見泛型物件進行引用傳遞的時候,型別必須一致;在建立泛型類物件時引用型別與例項化型別泛型也必須一致。
如果例一非要傳遞,可以將方法引數中的泛型取消掉,這樣能得出結果
public class genericdemo01
public static void fun(info temp>)
}
這樣做雖然執行沒問題,但有些不合適,因為之前已經定義了泛型了,所以我們可以使用"info> temp"**形式。表示可以接收任意泛型型別物件
注意:使用"?"意味著可以接收任意的內容,但是此內容不能使修飾的泛型物件進行修改
class info
public void setvar(t var)
public string tostring()
}public class genericdemo05
}
i.setvar("jack")對info>修飾的物件進行修改,所以出現錯誤
所以在使只能接收,不能修改。
二.受限泛型
在引用傳遞中,泛型操作中也可以設定乙個泛型物件的範圍上限和範圍下限。上限使用extends關鍵字宣告,表示引數化型別可能是所指定的型別,或者是此型別的子類 ,而範圍下限使用super進行宣告,表示引數化型別可能是所指定的型別或者此型別的父型別,直至object類。
設定上限:
宣告物件:類名稱 extends 類》 物件名稱
定義類:[訪問許可權]類名稱《泛型標識 extends 類》{}
}在類中宣告了泛型上限是number類,所以建立泛型物件時如果生命的泛型型別不是number的子類則會出錯
設定下限:
宣告物件:
類名稱 super類》 物件名稱
定義類:
[訪問許可權]類名稱《泛型標識 extends 類》{}
三.泛型與子類繼承的限制
乙個類的子類可以通過物件多型性,為其父類例項化,但是在泛型操作中,子類的泛型是無法使用父類的泛型型別接收的。例如:info不能使用info接收
Java泛型的理解
t bean classbean class bean 單獨的t代表乙個型別,而class和class代表這個型別所對應的類 class在例項化的時候,t要替換成具體類 class它是個通配泛型,可以代表任何型別 受限統配,表示t的乙個未知子類。下限統配,表示t的乙個未知父類。package com...
Java基礎 泛型理解
先來看下這一段 public class test test public void test 泛型擦除,由於虛擬機器中沒有泛型型別的物件。無論定義何種泛型型別,都必須會有乙個原始型別,虛擬機器執行時會將型別變數擦除,並統一用object代替,從此變為乙個普通類物件。test public void...
JAVA中的泛型
1 泛型的基本作用 有時候建立乙個類,需要這個類中的屬性是object型別的,可以時而為string型別,時而為long型別等。比如乙個座標類point,橫座標和縱座標可能是整型,可能是浮點型,也可能是字串型別,需要輸出的結果如下 如下 package org.mole.t public class...