日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java注解使用及原理解析

瀏覽:21日期:2022-08-31 13:28:32

基本特性

1、jdk 1.5之后才引入的。

2、用來說明程序的。(注釋是給程序員看的,注解就是給電腦看的)

java注解的作用分類

1、編寫文檔:通過代碼標識的注解生成文檔。【生成doc文檔】

2、代碼分析:通過代碼標識的注解對代碼進行分析。【使用反射】

3、編譯檢查:通過代碼標識的注解讓編譯器能夠實現基本的編譯檢查。【override】

測試類:

/** * 我的javadoc測試 */public class TestCode { /** * 計算兩個數的和 * @param a 整數a * @param b 整數b * @return 返回兩個數的和 */ public int add(int a, int b){ return a+b; }}

對于2、3兩點我們應該是知道的。盡管可能不知道里面的原理。但是是平時都在用的。但是對于1點還可以生成doc文檔?

測試操作如下:

D:softjdkbinjavadoc.exe .TestCode.java -encoding utf-8 -docEncoding utf-8 -charset utf-8

生成了一大堆的東西:

Java注解使用及原理解析

打開TestCode.html可以發現,我們的java api手冊就是這樣生產的。

注解來源分類

1、jdk自帶的注解,如常見的override(重寫校驗),deprecated(表示棄用)

2、自定義的注解

1)格式, 以override為例:

Java注解使用及原理解析

2)注解的本質

我們編寫一個簡單的注解

MyAnnotation.java

public @interface MyAnnotation {}

我們通過編譯和反編譯看下最終是什么樣的結果:

D:softjdkbinjavac.exe MyAnnotation.java

D:softjdkbinjavap.exe MyAnnotation.class

結果如下:

public interface MyAnnotation extends java.lang.annotation.Annotation {

}

可以發現注解的本質就是接口,這個接口繼承了jdk里面的Annotation接口。

3)注解的屬性

由于注解本質為接口,那么里面可以定義未實現的方法。這些稱為注解的“屬性”。

屬性的返回類型有(返回值不能為void):

基本數據類型 String 枚舉 注解 以及以上四種類型的數組

例子:

public enum Person { PS;}public @interface Annotation2 {}public @interface MyAnnotation { String stringValue(); int integerValue(); Person personValue(); Annotation2 myAnnotationValue(); String[] stringArrayValue();}

屬性的使用,需要注意幾點:

定義了屬性在使用的時候就要給屬性賦值,除非設置default值。如:String stringValue() default 'aaa'; 如果屬性為value且屬性只有這一個,那么value可以省略,直接填寫屬性值。 如果是數組,需要用{}包含起來。

public @interface MyAnnotation { String stringValue() default 'xxx'; int integerValue(); String[] stringArrayValue();}public @interface Annotation2 { String value();}@MyAnnotation(integerValue = 1, stringArrayValue = {'aaa', 'bbb'})@Annotation2('default')public class TestCode { /** * 計算兩個數的和 * @param a 整數a * @param b 整數b * @return 返回兩個數的和 */ public int add(int a, int b){ return a+b; } @Override public String toString() { return super.toString(); }}

元注解

元注解是你在編寫注解的時候,上面加的注解,就是注解的注解。主要有4個。

@target, 用于指定注解的使用位置。如@Target(ElementType.ANNOTATION_TYPE),@Target(value = {ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})。 @Inherited,表示父類加了這個注解,子類也自動加上。 @Documented, 表示這個注解的信息在執行javadoc的時候是否抽取到api文檔中。 @Retention,表示注解被保留的階段,java類,class文件,以及被jvm讀取。總共三種。RetentionPolicy.SOURCE, RetentionPolicy.CLASS, RetentionPolicy.RUNTIME

元注解的內容,可以到jdk源碼里面看一下,更有利于理解。

解析注解

這個是最關鍵了,以上加了這么多的屬性,并且還為這些屬性附了值,那么是希望程序讀取這些值,進行使用的。那其實就是要看如何拿到這些注解配置的值。

測試:

MyAnnotition.java:

package annotation_;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface MyAnnotation { String stringValue() default 'xxx'; int integerValue();}

TestCode.java:

package annotation_;@MyAnnotation(integerValue = 1)public class TestCode { public static void main(String[] args) { Class<TestCode> testCodeClass = TestCode.class; MyAnnotation myAnnotation = testCodeClass.getAnnotation(MyAnnotation.class); int i = myAnnotation.integerValue(); String s = myAnnotation.stringValue(); System.out.printf('i = %d, s = %sn', i, s); }}

輸出結果:

Connected to the target VM, address: ’127.0.0.1:49586’, transport: ’socket’i = 1, s = xxxDisconnected from the target VM, address: ’127.0.0.1:49586’, transport: ’socket’

Process finished with exit code 0

是不是感覺可以當配置文件使用。但是最主要的問題是myAnnotation.integerValue(),myAnnotation.stringValue()為什么可以拿到對應的值,這個也是最核心的問題。

那就是getAnnotation里面返回了一個實現了MyAnnotation注解(注解的本質是接口)的實例。這個類大概是長這樣的。

package annotation_;import java.lang.annotation.Annotation;public class MyAnnotationImpl implements MyAnnotation{ public String stringValue() { return 'xxx'; } public int integerValue() { return 0; } public Class<? extends Annotation> annotationType() { return null; }}

所以就可以通過抽象方法獲取到對應的值。(如何生成這樣的一個類,只是學習注解,可以不關心。要不然,只能看里面的源碼。因為如果自定義注解,你只會用到這一步,去獲取值。)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
伊人久久国产| 国产精品试看| 97精品国产| 热三久草你在线| 天堂成人国产精品一区| 国产一区二区三区不卡av| 91久久在线| 久久青草久久| 欧美视频久久| 一区二区不卡| 日韩欧美综合| 欧美国产日韩电影| 免费观看在线色综合| 成人精品天堂一区二区三区| 美女国产精品久久久| 亚洲制服一区| 久久精品999| 日韩电影免费网址| 黄色免费成人| 私拍精品福利视频在线一区| 国产aⅴ精品一区二区四区| 亚洲欧洲美洲国产香蕉| 中文字幕系列一区| 日韩精品免费一区二区在线观看| 精品美女在线视频| 国产日产一区| 国产麻豆一区二区三区| 青青草视频一区| 日韩精品免费视频人成| 99视频一区| 亚洲欧美日本国产| 日本视频中文字幕一区二区三区| 欧美激情在线精品一区二区三区| 国产精品久久久免费| 综合亚洲色图| 欧美91在线|欧美| 中文字幕一区二区三区四区久久| 久久国际精品| 久久精品成人| 国产在线观看91一区二区三区| 天堂中文在线播放| 性欧美长视频| 国产精品一区亚洲| 久久wwww| 欧美日韩免费观看一区=区三区| 激情综合网五月| 亚洲手机在线| 国产人成精品一区二区三| 国产精品一页| 蜜臀国产一区二区三区在线播放| 噜噜噜久久亚洲精品国产品小说| 青青国产精品| 日韩欧美二区| 日韩精品免费视频一区二区三区| 在线天堂中文资源最新版| 九九久久电影| 牛牛精品成人免费视频| 欧洲一级精品| 亚洲男女av一区二区| 国产精品v一区二区三区| 伊人网在线播放| 亚洲一二三区视频| 久久精品影视| 国产一区二区三区网| 日韩在线观看一区二区| 日本免费一区二区三区四区| 亚洲v天堂v手机在线| 国产高清一区二区| 日韩电影二区| 麻豆91精品视频| 国产日产精品一区二区三区四区的观看方式| 99精品一区| 亚洲女同av| 久久精品国产网站| 国产福利资源一区| 久久国产欧美日韩精品| 伊人精品一区| 香蕉视频亚洲一级| 成人精品国产亚洲| 老鸭窝一区二区久久精品| 日韩国产欧美三级| 亚洲精品国模| 亚洲综合中文| 亚洲综合婷婷| 蜜桃久久久久久| 免费成人在线影院| 蜜臀va亚洲va欧美va天堂| 欧美日韩日本国产亚洲在线| 亚洲午夜精品久久久久久app| 国产一区二区三区天码| 久久精品一区二区三区中文字幕| 亚洲精品美女91| 亚洲色图国产| 免费看日韩精品| 首页亚洲欧美制服丝腿| 免费不卡在线视频| 老色鬼久久亚洲一区二区| 欧美网站在线| av不卡免费看| 男人的天堂久久精品| 亚洲精品日本| 91精品国产自产精品男人的天堂 | 国产尤物精品| 激情欧美丁香| 久久理论电影| 亚洲大全视频| 视频一区在线播放| 日韩有吗在线观看| 欧美影院视频| 国产一区精品福利| 日韩网站中文字幕| 亚洲黄页一区| 日韩av电影一区| 精品伊人久久久| 午夜久久中文| 樱桃成人精品视频在线播放| 亚洲久久在线| 精品国产91| 欧美大黑bbbbbbbbb在线| 午夜在线视频观看日韩17c| 日韩avvvv在线播放| 精品国产成人| 欧美精品一二| 欧美在线看片| 亚洲精品永久免费视频| 伊人久久亚洲热| 日本一不卡视频| 精品久久不卡| 一区二区亚洲精品| 日韩精品免费视频人成 | 免费人成网站在线观看欧美高清| 久久午夜影视| 国产私拍福利精品视频二区| 精品日本视频| 国产偷自视频区视频一区二区| 午夜久久av| 国产色播av在线| 中文字幕一区二区三区在线视频| 麻豆一区二区99久久久久| 国产专区一区| 久久国产免费看| 1000部精品久久久久久久久| 青草国产精品| 五月激情久久| 日韩不卡一二三区| 日本精品影院| 亚州欧美在线| 在线中文字幕播放| 亚洲aa在线| 色爱av综合网| 日韩avvvv在线播放| 91精品国产成人观看| 国产区精品区| 香蕉成人久久| 岛国av在线播放| 日本视频一区二区| 韩日一区二区三区| 久久av免费看| 亚洲视频国产精品| 欧美亚洲精品在线| 欧美黄色一区二区| 亚洲色诱最新| 丁香六月综合| 国产精品magnet| 亚洲精品影视| 亚洲二区三区不卡| 麻豆视频在线观看免费网站黄| 日韩手机在线| 国产精品日本| 亚洲高清不卡| 日韩久久精品| 美腿丝袜亚洲三区| 亚洲tv在线| av成人国产| 国产91精品对白在线播放| 欧美黑人巨大videos精品| 久久一二三区| 日韩中文在线电影| 国产精品igao视频网网址不卡日韩| 亚洲一区亚洲| 亚洲涩涩在线| 黄色aa久久| 国产一区一一区高清不卡| 国产乱码精品一区二区三区亚洲人 | 国产日韩欧美在线播放不卡| 国产亚洲亚洲| 午夜精品亚洲| 亚洲午夜av| 国产精品毛片一区二区在线看| 欧美日本不卡| 欧美亚洲tv| 日韩精品成人在线观看| 热久久久久久久| 亚洲欧美日韩综合国产aⅴ| 亚洲国产专区| 九一成人免费视频| 欧美成人午夜| 欧美精品一区二区久久| 久久久精品五月天| 日韩精品一区二区三区免费观影 |