型別安全雖然有用,但有時會影響完全可以接受的結構。比如有時候要比較兩個物件陣列的平均值是否相同,而不考慮物件包含的數值的資料型別具體是什麼。例如:乙個
int
陣列的平均值為
2,乙個
double
陣列的平均值為
2.0,那麼平均值是相同的。解決此問題的途徑是使用萬用字元(
wildcard
)引數,由?指定,表示未知型別。
有界萬用字元
可以使用與界定型別引數相同的方法界定萬用字元引數,對於操作類層次的的泛型來說很重要。比方說有個例子是輸出維數陣列的座標值,有二維,三維,和四維
class twod }
class threed extends twod }
class fourd extends threed }
下面是乙個泛型類,該類儲存類乙個陣列;
publicclasscoords<textendstwod>
該類指定乙個由twod界定的型別引數
現在使用萬用字元定義乙個輸出方法:
s
taticvoidshowxy(coords<?>o)
(因為是進行類之間的操作,所以使用萬用字元進行操作)
因為coords指定類乙個twod上界,所以showxy顯示輸出每乙個twod類及其子類的陣列。
如果要輸出三維座標怎麼辦呢?
coords物件都只有兩個座標,無法輸出x,y,z三個引數。
這是要使用有界的萬用字元引數。
現在定義乙個方法,要求分別輸出三維座標值:
staticvoidshowxyz(coords<?
extendsthreed
>
a) }
通過使用
<? extends superclass>
的方法便可以指定上界的型別引數 使用
<?extends super subclass>
來指定下界的型別引數
當指定上界的型別引數時,?後表明可以匹配的上界,如果不匹配會編譯出錯;
當指定下界時,實際上是乙個排除,只有指定下界的超類是可接受引數,不常用。
關於萬用字元
action中的方法萬用字元 有些時候對action中方法的呼叫滿足一定的規律,例如edit action對應edit方法,delete action對應 delete方法,這個時候我們可以使用方法萬用字元,例如 這時,editcrud action的引用將呼叫edit方法,同理,deletecru...
關於萬用字元
比如檢索含或不含tt的渠道 以前我只會用 like tt not like tt 從 persons 表中選取名字的第乙個字元之後是 eorge 的人 我們可以使用下面的 select 語句 select from persons where firstname like eorge 希望從 per...
CSS中關於萬用字元樣式
一般來說我們為了方便設定margin和padding,為了把它置為0,我們都會去設定萬用字元 但是其實有的時候我們把所有的標籤都去這樣去設定是會出現問題的,也就是說可能會因為各個瀏覽器的解析方式不同,有時候不能完全達到初始化的效果,還有就是要給所有標籤都是設定也會對效能有所浪費,效率會低很多,因為萬...