推薦閱讀:
一借嗽。全面解析Java注解
1.為什么學(xué)習(xí)Java注解?學(xué)習(xí)Java注解有何好處转培?學(xué)完能做什么恶导?
(1)能·讀懂別人寫的代碼,特別是框架相關(guān)的代碼
(2)讓編程更加簡(jiǎn)潔浸须,代碼更加清晰
(3)讓別人高看一眼
2.Java注解概念
Java提供了一種源程序中的元素任何信息和任何元數(shù)據(jù)的途徑和方法
3.Java中的常見(jiàn)注解
(1)JDK自帶注解
@Override
首先創(chuàng)建一個(gè)Person接口惨寿,包含三個(gè)方法邦泄,如下:
package com.example.demo;
public interface Person {
public String name();
public int age();
public int uid();
}
創(chuàng)建一個(gè)MyInfo類,并添加實(shí)現(xiàn)方法裂垦,添加實(shí)現(xiàn)方法的快捷鍵為Alt+Enter虎韵,如下圖:
package com.example.demo;
public class My implements Person {
@Override
public String name() {
return null;
}
@Override
public int age() {
return 0;
}
@Override
public int uid() {
return 0;
}
}
此時(shí)會(huì)發(fā)現(xiàn)自動(dòng)在每個(gè)方法上面自動(dòng)生成了@Override注解,該注解的作用是告訴編輯器該方法覆蓋掉該類實(shí)現(xiàn)的接口中的方法
@Deprecated
當(dāng)某個(gè)方法不再需要被使用時(shí)使用@Deprecated缸废,代表該方法過(guò)時(shí)包蓝。之所以不刪掉方法而使用注解的方式是避免以前某些地方使用該方法造成報(bào)錯(cuò)。使用過(guò)時(shí)了的方法企量,方法名上會(huì)有一條刪除線测萎,不會(huì)有錯(cuò)誤提示但是會(huì)有警告。
如果非得使用過(guò)時(shí)的方法届巩,可使用@Suppvisewarnings硅瞧。
@Suppvisewarnings
@Suppvisewarnings使用方法如下:
package com.example.demo;
public class Test {
@SuppressWarnings("depreaction")
public void uid(){
Person m=new MyInfo();
m.uid();
}
}
(2)常見(jiàn)第三方注解
Autowried:生成對(duì)應(yīng)的實(shí)例
4.注解分類
除了以上的注解外,還有一種特殊的注解恕汇,即元注解腕唧。元注解:注解的注解。
5.自定義注解
總結(jié)起來(lái)共6點(diǎn)要求:
對(duì)5的使用:當(dāng)只有一個(gè)成員瘾英,成員名必須為value枣接,則使用注解時(shí),應(yīng)按照一下格式:
@注解名(對(duì)應(yīng)成員的值)
舉例:
@Description("happy")
對(duì)6的使用:沒(méi)有成員缺谴,則使用注解時(shí)但惶,應(yīng)按照一下格式:
@注解名
舉例:
@Description
解析注解
概念:通過(guò)反射獲取類,函數(shù)或成員上的運(yùn)行時(shí)注解信息湿蛔,從而實(shí)現(xiàn)動(dòng)態(tài)控制程序運(yùn)行的邏輯膀曾。
解析注解的步驟:
(1)使用類加載器加載類
(2)找到類上面的注解
(3)拿到注解實(shí)例
(4)找到方法上的注解
操作:
(1)創(chuàng)建自定義注解Desription
(2)在com.ann.test路徑下的Child類中使用(1)中的注解
(3)拿到注解實(shí)例
運(yùn)行輸出:I am class annotation
(4)找到方法上的注解
運(yùn)行輸出:I am method annotation
注意:子類注解繼承只能夠作用于類,繼承之后只會(huì)繼承類上面的注解阳啥。
舉例:
(1)Person類上有注解添谊,類中的方法也有注解
(2)Child類繼承自Person類
(3)使用上述的4步驟解析Child類中的注解,輸出為:I am interface