annotation其實就是**裡的特殊標記,可以在編譯,類載入,執行的時候被讀取,並執行相應的處理。在不改變原有邏輯的情況下,在原始檔嵌入一些補充資訊。一條重要原則:僅僅使用註解來標識程式元素,對程式不會造成任何影響,要讓註解起作用,必須為這些註解提供註解處理工具。
-@override只能修飾方法,強制子類必須覆蓋父類的方法
-@deprecated表示某個程式元素(類、方法、介面等)已經過時,若其他程式使用該元素,將會給出警告
-@suppresswarnings被修飾的程式元素取消顯示指定的警告,會同時作用於該程式元素下的所有的子元素
1、定義annotation
定義新的annotation,使用@inte***ce
關鍵字,與定義乙個介面非常相似。所有的註解都繼承了annotation介面。
public @inte***ce testable
使用annotation的語法,非常類似於public,final等修飾符(一般單獨放一行),通常用於修飾程式中的類 、介面、變數、方法等
public
class myclass
}
annotation中還可以帶成員變數,用無引數的方法來宣告。方法名定義了成員變數的名字,返回值定義了成員變數的型別。語法與定義介面的語法非常相似。若沒有定義預設值,則必須賦值。
public @inte***ce testable
//使用
public
class myclass
}
標記annotation:沒有成員變數,僅使用自身的存在與否,來為我們提供資訊。2、提取annotation資訊元資料annotation:包含成員變數的annotation,因為他們可以接受更多的元資料。
annotatedelement介面中的三個方法
- t getannotation(classaclass)
//返回該類程式元素上,指定型別的註解,若該型別的註解不存在,返回null
- annotation
getannotations()
//返回程式元素存在的所有註解
- boolean isannotationpresent(class<? extends annotation> aclass)
//判定該程式元素上是否包含指定型別的註解
annotatedelement介面的實現類:2.1、例子一class
contrustor
field
method
package
僅僅是乙個標記annotation,沒有成員變數
public @inte***ce testable
public
class myclass
public
void
m2()
}public
class testprocessor catch (exception e)}}
}}
其實註解很簡單,就是為原始碼新增一些特殊的標記,這些標記可以通過反射獲取,獲取到之後做出相應的處理。
2.2、例子二
public @inte***ce clicklistenerfor
public
class clicklistenerprocessor
}} catch (exception ex)
}}
public
class
mainactivity
extends
activity
class
okclicklistener
implements
view.onclicklistener
}class
cancelclicklistener
implements
view.onclicklistener
}}
@retention
@test
@documented
@inherited
第11章 執行緒
執行緒標識 就像每個程序有乙個程序id一樣,每個執行緒也有乙個執行緒id。程序id在整個系統中是唯一的,但執行緒id不同,執行緒id只有在它所屬的程序上下文中才有意義。程序id 用pid t資料型別表示 執行緒id用pthread t資料型別來表示 includeint pthread equal ...
第11章 執行緒
1.執行緒的作用 1 對於程式設計而言 當我們的乙個程序在某一時刻,需要做的事件不止一件的時候,一般有兩種方法。一種是採用非同步程式設計的模式,一種是採用多執行緒同步模式。但是多執行緒同步模式遠遠比非同步模式要方便的多。但是對於單核系統,往往非同步程式設計模式效率更高。2 對於互動程式,一般都是要多...
第11章 函式
1 把相關的語句組合在一起,並且賦予相應的名稱,用這種方法來給程式分塊,這種形式的組合就是函式,函式也叫例程或者過程。程式總是從 main 函式開始啟動。函式由函式名 引數 返回值型別以及一組包含操作語句的語句塊組成。函式可以支援過載,程式就是由函式組成。2 形參是函式定義時在形參表中定義的,並且由...