1. 程式人生 > >黑馬程式設計師:基礎加強註解和泛型

黑馬程式設計師:基礎加強註解和泛型

---------------------- android培訓java培訓、期待與您交流! ----------------------瞭解註解及Java提供的幾個基本註解:註解相當於一種標記,加了註解就等於打上了某種標記,沒加則沒有某種標記,打完標記以後javac編譯器。開發工具和其他程式可以用反射來了解你的類及各種元素上有無何種標記,看你有什麼標記,就去幹相應的事,標記可以加在,包,類,方法,欄位,方法的引數以及區域性變數上。為註解增加基本屬性:什麼是註解屬性:一個註解就相當於一個胸牌,比如你貼了胸牌,那麼證明你是學生,否則就不是,如果還想區分是那個班的學生,這時候可以為胸牌新增一個屬性來區分。加了屬性的效果為:@MyAnnotation(color="red");定義基本型別的屬性和應用屬性;在註解類中增加 String color();@@MyAnnotation(color="red");用反射的方式獲得註解對應的例項物件後,再通過該物件呼叫屬性對應的方法:MyAnnotation a = (MyAnnotation)AnnotationnTest.class.getAnnotation(MyAnnotation.class);System.out.println(a.color());可以認為上面這個@MyAnnotation是MyAnnotation類的一個例項物件。為屬性指定預設值;String color() default "yellow";Value屬性:String Value() default "zxx";如果註解中有一個名稱為Value的屬性,且你只想設定Value屬性(即其屬性都採用預設值或者你只有一個Value屬性,那麼可以省略value=部分: 如@MyAnnotation("lhm"));為註解增加高階屬性:陣列型別的屬性:int[] arrayAttr defauil {1,2,3};@MyAnnotation(arrayAttr={2,3,4});如果陣列屬性中只有一個元素,這時屬性值部分可以省略大括號。列舉型別的屬性:EnumTest.TrafficLamp lamp();@MyAnnotation(lamp=EnumTest.trafficLamp.GREEN)註解型別的屬性:MetaAnnotation anntationAttr() default @MetaAnnotation("xxx");@MyAnnotation(
[email protected]
("xyz"));可以認為上面這個@MyAnnotation是MyAnnotation類的一個例項物件,同樣的道理,可以認為上面這個@MetaAnnotation是MetaAnnotation類的一個例項物件,呼叫程式碼如下:MetaAnnotation ma = myAnnotation.annotationAttr();System.out.println(ma.Value());註解的詳細語法可以通過看java語法規範瞭解,即看:java的languagespecification;列舉和註解都是特殊的類,不能用new建立它們的例項物件,建立列舉的例項物件就是在其中增加元素。在程式中建立一個註解的例項物件,就是直接@放上一個標記即可。體驗泛型:JDK1.5以前的集合類中無法確定操作型別,而儲存不同的元素時,編譯器要強制型別轉換且執行時出錯。而JDK1.5的集合類希望你在定義集合時,明確表示你要想集合中裝那種型別的資料,而無法加入指定型別意外的資料。泛型是提供給java編譯器使用的,可以先定集合中的輸入型別,讓編譯器擋住源程式中的非法輸入,編譯器編譯帶型別說明的集合時會去掉"型別"資訊,使程式執行效率不受影響,對於引數化的泛型型別,getClass()方法的返回值和原始型別型別完全一樣,由於編譯生成的位元組碼會去掉泛型的型別資訊,只要能跳過編譯器,就可以往某個泛型集合中加入其他型別的資料,例如反射得到的集合,再呼叫add方法即可。泛型是JDK1.5的所有新特性中最難深入掌握的部分,不過,我們實際應用中不用掌握的那麼深入,掌握泛型的一些基本的內容就差不多了,沒有使用泛型時,只要是物件,不管是什麼型別的物件,都可以儲存進同一個集合中,使用泛型集合,可以將一個集合中的元素限定為一個特定型別,集合中只能儲存同一個型別的物件,這樣更安全,並且當從集合獲取一個物件時,編譯器也可以知道這個物件的型別,不需要對物件進行強制型別轉換,這樣更方便。瞭解泛型:ArrayList類定義和ArrayList類引用中涉及如下術語:整個稱為ArrayList泛型型別。ArrayList中的E稱為型別變數或型別引數。整個ArrayList引數化的型別。ArrayList中的Integer稱之為型別的引數的例項或實際型別引數。ArrayLisr<>中的<>念著typeof。ArrayList稱之為原始型別。引數化型別和原始型別的相容性:引數化型別可以引用一個原始型別的物件,編譯報告警告:原始型別可以引用一個引數化型別的物件,編譯也會報告警告。引數化型別不考慮型別引數的繼承關係;Collectioncon = new Collection 是不可以的。在建立陣列例項時,陣列的元素不能使用引數化的型別,例如: Vector vector ist[]= new Vector[10];泛型中的型別引數嚴格說明集合中裝載的資料型別是什麼和可以加入什麼資料型別,記住:Collection 和Collection是兩個沒有轉換關係的引數化的型別。泛型中的?萬用字元:使用?萬用字元引用其他引數化的型別,萬用字元定義的變數主要作用引用,可以呼叫與引數化無關的方法,不能呼叫與引數化有關的方法。定義泛型方法:Java的泛型方法沒有C++模板函式功能強大,java無法和C++模板一樣定義泛型。只有引用型別才能做為泛型的引數,基本資料型別不行。Java中的泛型型別(或者泛型)類似於C++中的模板,但是這種相似僅限於表面,Java語言中的泛型基本上完全是在編譯器中實現,用於編譯執行型別檢查和型別推斷,然後生成普通的非泛型的位元組碼,這種結束稱之為擦除,(編譯器使用泛型型別資訊保證型別安全,然後在生成位元組碼之前將其清除)。這是因為擴充套件虛擬機器指令集來支援泛型被認為是無法接受的,這會為Java廠商升級其JVM造成難以逾越的障礙,所以,java的泛型採用了可以完全在編譯中實現的擦除方法。定義泛型型別:如果類的例項物件中的多處都要用到同一個泛型引數,即這些地方引用的泛型型別要保持同一個實際型別時,這時就要採用泛型型別的方式進行定義,也就是類級別的泛型。類級別的泛型是根據引用該類名時指定的型別資訊來引數化型別變數的。注意:在對泛型進行引數化時,型別引數的例項必須是引用型別,不能使基本型別。 當一個變數被宣告為泛型時,只能被例項變數和方法呼叫(還有內嵌型別),而不能被靜態變數----------------------
android培訓
java培訓、期待與您交流! ----------------------

相關推薦

黑馬程式設計師基礎加強註解

---------------------- android培訓、java培訓、期待與您交流! ----------------------瞭解註解及Java提供的幾個基本註解:註解相當於一種標記,加了註解就等於打上了

黑馬程式設計師基礎加強---註解

------- android培訓、java培訓、期待與您交流! ---------- 元註解:   元註解的作用就是負責註解其他註解。Java5.0定義了4個標準的meta-annotation型別,它們被用來提供對其它 annotation型別作說明。Java5.

黑馬程式設計師_java基礎加強學習筆記之註解

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">j

黑馬程式設計師—java基礎加強—內省、註解

---------------------- android培訓、java培訓、期待與您交流! -------------------- 內省:IntroSpector——》JavaBean——特殊的Java類 當Java執行時可檢查自身,Java 程式中詢問它的一個物

黑馬程式設計師_基礎加強註解

---------------------- ASP.Net+Android+IO開發S、.Net培訓、期待與您交流! ---------------------- 註解(annotation)是jdk1.5的新特性 瞭解註解及java提供的幾個基本註解 1)  先通過@S

黑馬程式設計師---java基礎加強---jdk1.5新特性之註解

----------- android培訓、java培訓、java學習型技術部落格、期待與您交流! ----------- 註解(Annotation ) 是JDK 1.5 的新特性,現已應用於Spring , EJB ,JPA... 使用註解是一種趨勢。它可以用於建立

黑馬程式設計師_基礎加強_Java執行緒通訊執行緒併發庫

 ------- android培訓、java培訓、期待與您交流! ---------- java5的執行緒鎖技術 Lock&Condition實現執行緒同步通訊 Lock比傳統的synchronized方式更加面向物件,兩個執行緒執行的程式碼塊要實現同步互斥,

黑馬程式設計師——OC基礎——set方法get方法

-----------android培訓、java培訓、java學習型技術部落格、期待與您交流!------------ 我們在OC中定義一個類的時候,它的成員變數預設情況下是@protected的。這是因為我們的成員變數一般不允許直接去訪問,如果需要修改和訪問成員變數我們

黑馬程式設計師-java基礎加強-反射的深入講解

-------------------------ASP.Net+Unity開發、.Net培訓、期待與您交流!-------------------------- 透徹分析反射的基礎_Class類 Class類1、定義java程式中的各個java類也屬於同一類事物,而描述這

黑馬程式設計師---java基礎加強 反射的深入理解

=================第5單元:反射的深入講解=============== 17.透徹分析反射的基礎_Class類 反射的基礎: Class也就是每個java源程式通過編譯後生成的檔案載入進入記憶體的那個位元組碼檔案, 獲取到該位元組碼,就可以獲取

黑馬程式設計師基礎加強---eclipse加強

Ctrl+1 快速修復(最經典的快捷鍵,就不用多說了)Ctrl+D: 刪除當前行 Ctrl+Alt+↓ 複製當前行到下一行(複製增加)Ctrl+Alt+↑ 複製當前行到上一行(複製增加)Alt+↓ 當前行和下面一行互動位置(特別實用,可以省去先剪下,再貼上了)Alt+↑ 當前行和上面一行互動位置(同上)Alt

黑馬程式設計師Java基礎——集合框架之體系概述、共性方法與迭代器

------- Java EE培訓、java培訓、期待與您交流! ---------- 1.體系概述     1.1 為什麼出現集合類?         面嚮物件語言對事物的體現都是以物件的形式,所

黑馬程式設計師從零基礎到精通的前端學習路線

隨著網際網路的深入發展,前端開發工程師一躍成為市場上非常搶手的人才。很多同學,包括以前做UI的、Java的、或者對於IT完全零基礎的同學都想學習前端。下圖是網上流傳甚廣的一張前端學習思維導圖,很多初學者表示看到這些密密麻麻的知識點就已經暈了。確實,前端是一門涵蓋面很廣的

黑馬程式設計師前端UI應該學哪個好呢?

導讀: 如果,你天生喜歡數理化,擁有較強的邏輯思維能力,看到程式碼就興奮,無論男女,你就應該去學前端; 如果,你天生愛美,對美的事物都要一探究竟,並且喜歡去創造美的事物,無論男女,你就應該去學UI設計; 當然,想成為真正意義上的前端開發人員,小編建議兩者都要懂,兩者都要會

黑馬程式設計師--OC基礎--類方法、物件方法self的使用

1、類方法 (1)類方法就是一個方法,它的使用不需要使用者去建立一個類的例項進行呼叫而可以直接通過類名對方法進行呼叫。 宣告一個類方法的格式: +(返回值型別) 方法名:(引數1型別)引數1名稱 方法名:(引數2型別)引數2名稱; 例:

黑馬程式設計師Linux基礎 vmware tools總結

  昨天華為電話技術面試,感覺自己學的很粗糙,問的問題都知道大概,不能準確回答,本週目標,把課程 過一遍,學會點東西,而不是皮毛。遇到問題別放棄,敢於鬥爭。工業產品而不是學習隨意產品。 好習慣,別貪 開發環境搭建 由於我之前在一臺電腦安裝過虛擬機器,直接把它克隆到

黑馬程式設計師輕鬆精通Java學習路線連載1-基礎篇!

程式語言Java,已經21歲了。從1995年誕生以來,就一直活躍於企業中,名企應用天貓,百度,知乎......都是Java語言編寫,就連現在使用廣泛的XMind也是Java編寫的。Java應用的廣泛已經到了“無處不用”的盛世,而且一直在語言排行榜榜首,從未被超越。廢話不

黑馬程式設計師-java基礎-併發修改異常產生的原因解決方案

------Java培訓、Android培訓、iOS培訓、.Net培訓、期待與您交流! ------- * 問題?  * 我有一個集合,如下,請問,我想判斷裡面有沒有"world"這個元素,如果有,我就新增一個"javaee"元素,請寫程式碼實現。  *   * Conc

黑馬程式設計師--OC基礎[email protected]@synthesize

1、@property關鍵字 (1)基本概念 @property是編譯器指令,所謂編譯器指令,就是告訴編譯器要做什麼。 @property告訴編譯器宣告屬性的訪問器(setter/getter)方法,這樣的好處是免去了程式設計師編寫set和get的

黑馬程式設計師畢向東java視訊之基礎

一、學習java預備工作: 1、dos命令列 dir:列出當前目錄下的檔案和資料夾 md:建立目錄 rd:刪除目錄 del:刪除檔案 exit::推出dos命令列 2、java特性:與平臺無關 原理:在執行java應用程