java 高級泛型_Java 泛型高級

1、限制泛型可用類型

在定義泛型類別時,預設可以使用任何的類型來實例化泛型中的類型,但是如果想要限制使用泛型的類別時,只能用某個特定類型或者其子類型才能實例化該類型時,使用extends關鍵字指定這個類型必須是繼承某個類,或者實現某個接口。

如下Code

public class ListGenericFlag {

private T[] flagArray;

public T[] getFlagArray() {

return flagArray;

}

public void setFlagArray(T[] flagArray) {

this.flagArray = flagArray;

}

}

測試:

public static void main(String[] args) {

ListGenericFlag flag1 = new ListGenericFlag();

ListGenericFlag flag2 = new ListGenericFlag();

LinkedList[] likedList = new LinkedList[10];

flag1.setFlagArray(likedList);

ArrayList[] arrayLists = new ArrayList[10];

flag2.setFlagArray(arrayLists);

}

如果出入的是HashMap,就會顯示出錯

f85d4436d69c0e8a258c139bd51e0f35.png

2、當沒有指定泛型繼承的類型或接口時,默認使用T extends Object,所有默認情況下任何類型都可以作為參數傳入。

如下圖Code,可以增加任何對象。

8286a1b51b8f9dcfcd54859ab150fb7b.png

3、現在有這樣一個需求,需要實現如下

flag = new GenericFlag()

flag = new GenericFlag

簡單的說,實例化類型持有者時,它必須是實現List的類別或其子類別,要定義這樣一個名詞,可以使用“?”通配子元,并使用“extends”關鍵字限定類型持有者的型態。

實現的Code如下

public class GenericTest {

private T flag;

public T getFlag() {

return flag;

}

public void setFlag(T flag) {

this.flag = flag;

}

public static void main(String[] args) {

//固定語法

GenericTest extends List> g1 = null;

g1 = new GenericTest();

g1 = new GenericTest();

}

}

super為list上面的(用的較少)

GenericTest super List> g2 = null;

g2 = new GenericTest();

4、泛型的繼承

定義了Parent類,里面有泛型T1和T2

public class Parent {

private T1 flag;

private T2 flag2;

public T1 getFlag() {

return flag;

}

public void setFlag(T1 flag) {

this.flag = flag;

}

public T2 getFlag2() {

return flag2;

}

public void setFlag2(T2 flag2) {

this.flag2 = flag2;

}

}

定義了Child類,定義了T3。同時可以訪問父類的T1和T2

public class Child extends Parent {

private T3 flag3;

public T3 getFlag3() {

return flag3;

}

public void setFlag3(T3 flag3) {

this.flag3 = flag3;

}

}

5、泛型接口的繼承

定義一個泛型接口

public interface IParent {

public void setFlag1(T1 flag1);

public void setFlag2(T2 flag2);

public T1 getFlag1();

public T2 getFlag2();

}

定義泛型接口的實現類

public class ChildClass implements IParent {

private T1 flag1;

private T2 flag2;

public void setFlag1(T1 flag1) {

this.flag1 = flag1;

}

public void setFlag2(T2 flag2) {

this.flag2 = flag2;

}

public T1 getFlag1() {

return flag1;

}

public T2 getFlag2() {

return flag2;

}

}

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

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

相關文章

做Web前端開發的你必須會這幾點!

1、Web開發分類與區別 人們通常將Web分為前端和后端,前端相關的職位有前端設計師(UI/UE),前端開發工程師,后端相關的有后端開發工程師。 2、技術棧區別 看各大招聘網站上,公司對前端開發工程師的要求莫過于精通HTML,CS…

PDA開發系列:GPS模塊的調用

摘要在wince6.0中,要調用GPS模塊,其實是一件很容易的事情。 正文在wince6.0中,如果要調用GPS模塊,其實很簡單,微軟已經為我們做好了這一切,我們只需要在自己的解決方案中,添加對Microsoft.Windo…

2021 年最值得使用的 Node.js 框架

大家好,我是若川。今天推薦一篇譯文:2021年最值得使用nodejs框架,值得收藏,很快能看完。點擊下方卡片關注我、加個星標。學習源碼整體架構系列、年度總結、JS基礎系列Node.js 是最敏捷的服務端 web 應用平臺,因為它為應…

面試被拒絕如何爭取_爭取反饋

面試被拒絕如何爭取Let me start by saying that Dribbble is awesome. I’ve been a member of the Dribbble community for years. I swoon over the beautiful design I see throughout the site. Dribbble is among the most popular places to go for inspiration and whi…

highgui java opencv_java – OpenCV 3.0.0 JAR缺少HighGUI

我正在使用Java支持來編譯OpenCV 3.0.0。我的腳本是:mkdir /opt/opencv /opt/opencv/opencv-buildcd /opt/opencvgit clone https://github.com/Itseez/opencv.gitcd /opt/opencv/opencv-buildexport OPENCV_INSTALL_PATH/opt/opencvexport FFMPEG_PATH/opt/ffmpeg/…

中臺之上(二):為什么業務架構存在20多年,技術人員還覺得它有點虛?

業務架構這個詞大家時常聽到,但是能解釋得清楚的卻不多,撩撩度娘,你就會發現,不少人問及業務架構和應用架構的關系,聊天時,也常有人問起業務架構師和產品經理什么區別?業務架構分析和需求分析什…

你對webpack了解多少?

大家好,我是若川。之前有一個朋友給我留言:自己目前在一家小廠工作,對webpack的使用比較熟悉,想要跳槽去大廠,但是糾結是否還需要深入學習webpack(因為覺得學了也用不到,但又怕面試不通過&#…

轉:數據庫關系模式的范式詳解

關系模式的范式 主要有4種范式,1NF,2NF,3NF,BCNF,按從左至右的順序一種比一種要求更嚴格。要符合某一種范式必須也滿足它前邊的所有范式。一般項目的數據庫設計達到3NF就可以了,而且可根據具體情況適當增加…

紋理對象紋理單元紋理目標_網頁設計理論:紋理

紋理對象紋理單元紋理目標Texture has become an indispensable element in web design. It is not only a trend but also a quick way to increase the depth of web pages. When designers learn to use textures, they can strengthen the appeal of web pages. It can be …

javascript-高級用法

22.1 安全的類型檢測 為什么:typeof 不靠譜, 無法將數組從對象中區分出來, instanceof 有特殊情況,在iframe存在的情況下無法判斷另一個iframe內的數組 如何做:Object.prototype.toString().call(Arr); 22.3 高級定時器 特點&…

java dao層和base層_詳解Javaee Dao層的抽取

有時候我們在實現不同功能的時候回看到很多的Dao層的增加、修改、刪除、查找都很相似,修改我們將他們提取BaseDao一、提取前1. 提取前的LinkDao層:public interface LinkManDao {Integer findCount(DetachedCriteria detachedCriteria);List findByPage(…

暢銷書《深入淺出Vue.js》作者,在阿里淘系1年的收獲成長

大家好,我是若川。今天推薦一篇95年的博文的文章。他的故事應該挺多人知道。如果不知道可以看他的博客 https://github.com/berwin/blog點擊下方卡片關注我、加個星標時間好快,眨眼間,加入阿里已經一年了。這一年發生了很多事,整體…

GrideView屬性的學習

GridView 控件可公開分頁事件和排序事件,以及在創建當前行或將當前行綁定至數據時發生的事件。單擊一個命令控件(例如,包含在 GridView 控件中作為其中的一部分的 Button 控件)時也會引發事件。下表描述了由 GridView 控件公開的事…

插圖 引用 同一行兩個插圖_將圖標變成插圖的五個簡單步驟

插圖 引用 同一行兩個插圖Every creative person has probably already been in this situation: A project, be it a website, an app — or as far as I am concerned: often a news story would benefit from an appealing side visual. But neither budget nor time makes …

urllib庫parse模塊的使用

官方文檔轉載于:https://www.cnblogs.com/vector-wyw/p/10416010.html

java dateutil 獲取時間戳_java DateUtil工具類時間戳類型轉換詳解

本文實例為大家分享了DateUtil工具類時間戳類型轉換的具體代碼,供大家參考,具體內容如下package com.sinosoft.media.sms.util;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class DateUtil {//當前…

fluorinefx C# 版的開源rtmp服務器

fluorinefx C# 版的開源rtmp服務器 - [其它資源] 版權聲明:轉載時請以超鏈接形式標明文章原始出處和作者信息及本聲明http://25swf.blogbus.com/logs/28529745.html fluorinefx支持的 .net 框架集有 1.1 2.0 3.5 以及 mono 1.2.4支持的東東Flex, Flash Remoting (RP…

web登錄界面設計_出色的Web界面設計的7條規則

web登錄界面設計When you work on a website or on the design of web pages, remember that their success is not determined by the beauty of their visual style. In fact, in his article “10 Principles Of Good Website Design”, Vitaly Friedman stated:當您在網站或…

關于為什么我推薦大家看vue代碼的隨想

大家好,我是若川。今天給大家推薦一篇大圣老師在知乎的回答,很快能看完。我也曾經回答過這個問題。若川知乎高贊:有哪些必看的 JS 庫?不要為了讀源碼而讀源碼,但要學會看源碼。自己常用的熟悉的庫的源碼值得讀讀。點擊…

算法 - 最好、最壞、平均復雜度

注:本文僅為筆記。 原文 極客時間 - 數據結構與算法之美 - 04 | 復雜度分析(下):淺析最好、最壞、平均、均攤時間復雜度 最好、最壞時間復雜度 略,比較容易分析。 平均時間復雜度 需考慮概率來計算。 概率論中的加權平…