国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

詳解Java進(jìn)階知識(shí)注解

瀏覽:33日期:2022-08-14 14:48:54
一、注解的概念1、注解官方解釋

注解

叫元數(shù)據(jù),一種代碼級(jí)別的說明,它是JDK1.5及以后版本引入的一個(gè)特性,與類、接口、枚舉在同一個(gè)層次,它可以聲明在包、類、字段、局部變量、方法參數(shù)等的前面,用來對(duì)這些元素進(jìn)行說明、注釋。

注解的作用分類

編寫文檔:通過代碼里表示的元數(shù)據(jù)生成文檔【生成doc文檔】 代碼分析:通過代碼里表示的元數(shù)據(jù)進(jìn)行分析【使用反射】 編譯檢查:通過代碼里表示的元數(shù)據(jù)讓編譯器能夠?qū)崿F(xiàn)基本的編譯檢查【Override】

注解按照運(yùn)行機(jī)制分類

源碼注解:注解只在源碼中存在,編譯成.class文件之后就不存在了 編譯時(shí)注解:注解在源碼存在的基礎(chǔ)上,也會(huì)在.class文件中存在,但是在運(yùn)行階段中就不存在了,例如:@Override 運(yùn)行時(shí)注解:注解在運(yùn)行階段依然存在,且能夠影響程序的運(yùn)行過程,例如:@Autowired2、注解與注釋的區(qū)別

(1)注解:用于描述代碼,說明程序,主要目的是為了給計(jì)算機(jī)看,且能夠影響程序的運(yùn)行。

(2)注釋:用于描述代碼的作用和一些關(guān)鍵性的知識(shí)點(diǎn),使用文字描述程序,是為了給程序員觀看,以此來使程序員能夠以最快的時(shí)間了解被注釋的代碼。

二、內(nèi)置注解與元注解1、常用的內(nèi)置注解 @Override:檢測(cè)該注解標(biāo)記的方法是否繼承自父類; @Deprecated:說明被標(biāo)記的內(nèi)容已過時(shí),暗示著在不久之后可能會(huì)被更新抹除; @SuppressWarnings:壓制警告,就是被標(biāo)記的部分不會(huì)產(chǎn)生警告,常用的參數(shù):@SuppressWarnings(“all”); @SafeVarargs:參數(shù)安全類型注解,它的目的就是提醒開發(fā)者不要用參數(shù)做一些不安全的操作,它的存在會(huì)阻止編譯器產(chǎn)生unchecked這樣的警告;2、常用的元注解

元注解:用于描述注解的注解,在創(chuàng)建注解時(shí)使用

1. @Target屬性值:

ElementType.TYPE:能修飾類、接口或枚舉類型 ElementType.METHOD:能修飾方法 ElementType.FIELD: 能修飾成員變量 ElementType.PARAMETER:能修飾參數(shù) ElementType.CONSTRUCTOR:能夠修飾構(gòu)造器 ElementType.ANNOTATION_TYPE:能夠修飾注解 ElementType.PACKAGE:能夠修飾包 ElementType.LOCAL_VARIABLE:能夠修飾局部變量

2.@Retention屬性值:

RetentionPolicy.SOURCE:注解只在源碼中存在,編譯成class之后就沒了 RetentionPolicy.CLASS:注解在源碼和class中都存在,運(yùn)行時(shí)就沒了,這個(gè)是Retention的默認(rèn)值 RetentionPolicy.RUNTIME: 注解在源碼、class、運(yùn)行時(shí)都存在,如果要使用反射一定要定義為這種類型

3.@Documented:該注解的作用就是表示此注解標(biāo)記的注解可以包含到j(luò)avadoc文件中去4.@Inherited:描述注解是否能夠被子類所繼承

三、自定義注解1、自定義注解基礎(chǔ)知識(shí)

1.格式:

@Inherited//元注解public @interface zhujie{}

2.注解本質(zhì):注解的本質(zhì)上就是一個(gè)接口,該接口默認(rèn)繼承Annotation

public interface MyAnno extends java.lang.annotation.Annotion

3.屬性:接口中可以定義的內(nèi)容(成員方法、抽象方法)

屬性的返回值:

八種基本數(shù)據(jù)類型 字符串類、接口、枚舉 注解 以上類型的數(shù)組

屬性賦值注意事項(xiàng)

如果定義屬性時(shí),使用default關(guān)鍵字給屬性默認(rèn)初始化值,則使用注解時(shí),就可以不進(jìn)行屬性的賦值,否則都必須給屬性賦值 如果只有一個(gè)屬性需要賦值的話,并且屬性的名稱是value,則使用注解給屬性賦值時(shí),value可以省略,直接定義值就可以了 數(shù)組賦值時(shí),值需要使用{}包裹,如果數(shù)組中只有一個(gè)值,則{}可以省略不寫2、演示自定義注解的使用

自定義注解annotation

@Retention(value = RetentionPolicy.RUNTIME)@Target(value = ElementType.TYPE)public @interface annotation { String name() default '木魚'; int age(); int[] score();}

使用以上注解的類TestAnnotation

//name具有默認(rèn)值,不需要必須為name賦值,但也可以重新賦值@annotation(age=20,score={99,100,100})public class TestAnnotation { public static void main(String[] args) throws ClassNotFoundException {Class clazz = Class.forName('test.TestAnnotation');annotation annotation = (annotation) clazz.getAnnotation(annotation.class);System.out.println('姓名:'+annotation.name()+' 年齡:'+annotation.age());System.out.print('成績?yōu)椋?);int[] score=annotation.score();for (int score1:score){ System.out.print(score1+' ');} }}

運(yùn)行結(jié)果

詳解Java進(jìn)階知識(shí)注解

3、演示注解在程序中的作用

兩個(gè)方法:

類對(duì)象調(diào)用 isAnnotationPresent(Class<? extends Annotation> annotationClass)判斷是否應(yīng)用了某個(gè)注解 通過getAnnotation()方法獲取Annotation對(duì)象,或者getAnnotations()方法獲取所有應(yīng)用在該類上的注解

1.創(chuàng)建自定義注解

@Retention(value = RetentionPolicy.RUNTIME)@Target(value = ElementType.FIELD)public @interface StringNull {}

2.創(chuàng)建實(shí)體類

public class Student { @StringNull public String name=null; @StringNull public String xuehao=null; @StringNull public String sex=null; public void setName(String name) {this.name = name; } public void setXuehao(String xuehao) {this.xuehao = xuehao; } public void setSex(String sex) {this.sex = sex; }}

3.創(chuàng)建測(cè)試類,測(cè)試注解

public class TestAnnotation { public static void main(String[] args) throws Exception{Class clazz = Class.forName('test.Student');Student student =(Student) clazz.newInstance();student.setName('小明');Field[] fields= clazz.getFields();for(Field f:fields){ if(f.isAnnotationPresent(StringNull.class)){if(f.get(student)==null){ System.out.println(f.getName()+':是空的字符串屬性');}else{ System.out.println(f.getName()+':'+f.get(student));} }} }}

4.運(yùn)行結(jié)果

詳解Java進(jìn)階知識(shí)注解

以上就是詳解Java進(jìn)階知識(shí)注解的詳細(xì)內(nèi)容,更多關(guān)于Java注解的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 特级一级全黄毛片免费 | 久久久久久久久久久久福利 | 伊人久久在线视频 | 怡红院视频网 | 国产成人香蕉久久久久 | 韩国19禁主播裸免费福利 | 国产一区自拍视频 | 成人综合婷婷国产精品久久免费 | 久久免费黄色 | 手机看片精品高清国产日韩 | 亚洲成人毛片 | 欧美亚洲视频在线观看 | 国产精品黄在线观看免费软件 | 欧美午夜免费观看福利片 | 99色视频在线观看 | 亚洲精品视频区 | 国产欧美日韩在线观看 | 亚洲视频成人 | 日本一区二区不卡久久入口 | 丝袜精品 欧美 亚洲 自拍 | 国产成人一区二区三区在线视频 | 国产天堂 | 亚洲无吗视频 | 欧美成人aaa大片 | 色网站在线 | 一区二区三区四区在线免费观看 | 男女视频在线观看 | 久久99久久成人免费播放 | 久久久久国产一级毛片高清板 | 国产欧美日韩精品高清二区综合区 | 亚洲狠狠综合久久 | 日产一区两区三区 | 一级毛片在线不卡直接观看 | 久久精品在线视频 | 国产欧美精品午夜在线播放 | 久9精品视频 | 亚洲国产一区二区a毛片日本 | 亚洲国产欧美在线人成精品一区二区 | 日韩精品久久久毛片一区二区 | 国产高清视频在线 | 成年女人毛片免费播放视频m |