Java中泛型的理解(二)

2021-07-05 15:33:28 字數 2739 閱讀 7262

主要總結的內容萬用字元、受限泛型、泛型與子類繼承的限制

一.萬用字元「?」

在開發中物件的引用傳遞是最常見的,如果在泛型類的操作中,在進行引用傳遞的時候泛型型別必須匹配才可以傳遞,否則無法傳遞

我們看如下程式:

可見泛型物件進行引用傳遞的時候,型別必須一致;在建立泛型類物件時引用型別與例項化型別泛型也必須一致。

如果例一非要傳遞,可以將方法引數中的泛型取消掉,這樣能得出結果

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...