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

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

JAVA注解相關知識總結

瀏覽:24日期:2022-08-31 11:35:27
注解的概念

java注解:

比較官方的說法:

從JDK5開始,Java增加對元數據的支持,也就是注解,注解與注釋是有一定區別的,可以把注解理解為代碼里的特殊標記,這些標記可以在編譯,類加載,運行時被讀取,并執行相應的處理。通過注解開發人員可以在不改變原有代碼和邏輯的情況下在源代碼中嵌入補充信息。

注解,可以看作是對 一個 類/方法 的一個擴展的模版,每個 類/方法 按照注解類中的規則,來為 類/方法 注解不同的參數,在用到的地方可以得到不同的 類/方法 中注解的各種參數與值。

說說我的理解

注解就是Annotation,相信不少人也和我之前一樣以為和注釋一樣,是一段輔助性的文字,其實注解不是這樣的。注解與注釋的區別在于,注解可以實現程序的某些功能。

注解是不會影響java程序的運行,不會干擾程序代碼的運行。通俗來講,注解就像一個標簽,初學者需要知道他就像一個功能標簽,能實現一些功能就行了!入門了再慢慢深入理解。

看下面的例子你就能更好的理解注解了。

注解的類別

(1)java語言提供的注解

(2)元注解

(3)其他注解

java語言提供的注解

1.Override

學過java你就知道,你肯定見過這種

@Overridepublic Object clone() throws CloneNotSupportedException {}

沒錯,@Override就是一個java提供的注解。當你要重寫父類的方法是需要用到這個注解。

2.@Deprecated

這個注解你能看到的時間比較少,但是你應該見過類似的,編譯一個java程序時,編譯器可能會提示你你使用了一個過時的方法(idea會),或者過時的類,過時的成員變量。

3.@SuppressWarnings

這個注解的意思是:阻止編譯器的警告,上一個注解說到@Deprecated會提示你使用過時方法等的一個警告,當你使用了這個注解之后就不會有這種提示了!這個注解需要一個參數,參數都是提前設計好了的。參數如下

(1)deprecation 使用了過時的類或方法的警告

(2)unchecked 執行了未檢查的轉換時的警告,如使用集合時未指定泛型

(3)fallthrough :當在switch語句使用時發生case穿透

(4)path 在類路徑,源文件路徑等中有不存在路徑的警告

(5)serial 當在可序列化的類上缺少serialVersionUID定義時的警告

(6)finally 任何finally子句不能完成時的警告

(7)all 關于以上所有情況的警告

元注解

所謂元注解就是注解的注解,雖然說這些注解也是java語言提供的,但是他不同于上面說的哪幾種注解,上面的幾種注解也是由

元注解組成的。他們的源代碼里面包含了元注解。

元注解有哪些呢?

- @Target:注解的作用目標- @Retention:注解的生命周期- @Documented:注解是否應當被包含在 JavaDoc 文檔中- @Inherited:是否允許子類繼承該注解

這4個值java8之前的元注解,在java8又新增了一個

@Repeatable 元注解,表示被修飾的注解可以用在同一個聲明式或者類型加上多個相同的注解(包含不同的屬性值)

我們詳細說一下這些注解都是什么意思

1.@Target 注解的作用目標

具體的作用目標有以下幾個- ElementType.TYPE:允許被修飾的注解作用在類、接口和枚舉上- ElementType.FIELD:允許作用在屬性字段上- ElementType.METHOD:允許作用在方法上- ElementType.PARAMETER:允許作用在方法參數上- ElementType.CONSTRUCTOR:允許作用在構造器上- ElementType.LOCAL_VARIABLE:允許作用在局部變量上- ElementType.ANNOTATION_TYPE:允許作用在注解上- ElementType.PACKAGE:允許作用在包上

以上都是這個注解的參數

可能有人會問作用目標是什么?就是說我聲明的這個注解可以用在那個地方,比如說@Override,是不是只能用在重寫的方法上面。如果你學了springboot的話,里面的很多注解都是可以使用在類上面也可以使用在方法上面。

2.@Retention 注解的生命周期

什么意思?注解本身是不會影響正常邏輯程序的運行的,然后這個注解的生命周期指的是我聲明的這個注解會保留到什么階段,具體的參數如下:

- RetentionPolicy.SOURCE:當前注解編譯期可見,不會寫入 class 文件,會被編譯器丟棄- RetentionPolicy.CLASS:類加載階段丟棄,會寫入 class 文件,會被java虛擬機丟棄- RetentionPolicy.RUNTIME:永久保存,可以反射獲取到對應的注解

3.@Documented 注解是否應當被包含在 JavaDoc 文檔中

這個倒沒有什么好說的,就是標注被修飾這個注解包含在JavaDoc文檔中。

4.@Inherited 是否允許子類繼承該注解

簡單點說,子類繼承父類時,如果父類的注解有@Inherited標識的注解,子類繼承過來的時候也會自動繼承@Inherited標識的注解。但是在接口繼承的時候,子類不會繼承任何@Inherited標識的注解。

5.@Repeatable

在需要對同一種注解多次使用時,往往需要借助@Repeatable。比如說,現在有一篇文章,這篇文章需要添加多個標簽,這些標簽就相當于注解,但是這個標簽只是內容不同,這時候就需要使用到這個注解了。

其他注解

所謂的其他注解就是第三方注解,比如說很火的springboot,它提供了很多的注解,可以替代一些配置文件,告訴這個框架有這個注解是需要提供哪些功能。比如說@Controller,@RequestMapping,@Service等。

注解用法

講了半天,可能你還是一臉懵逼,你只講概念,怎么用?

下面就來介紹這個注解怎么用,主要是講解注解的聲明用法。

1.注解聲明

public @interface Entity {}

這個和聲明接口很類似,只是在前面多了一個@具體怎么用,我們用一個例子來講解

@Target(ElementType.TYPE)//允許聲明的注解修飾在接口,類,枚舉上面@Retention(RetentionPolicy.RUNTIME)//代碼運行期間一直保存注解,可以通過反射獲取public @interface Entity {//表名,注解的參數,默認為空public String tableName() default '';//中文名稱public String cnName() default '';}

解釋一下注解的參數聲明

第一個參數定義參數為String類型,設置default 默認值,表示這個不是必須的,在使用注解的時候沒有填寫這個參數不會報錯,他會使用默認值。聲明好注解之后,我們將這些注解運用到一個實體類上面。

再來一個聲明的作用在屬性上面的注解。

@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface Column { //屬性的名稱 public String fieldName() default ''; //屬性的屬性中文名稱 public String fieldCnName() default ''; //屬性的類型 public String Type() default 'String';}

然后我們將這兩個注解運用到實體類Student上面。

@Entity(tableName = 'student',cnName = '學生表')public class Student { @Column(fieldCnName = '姓名',fieldName ='name') private String name; @Column(fieldCnName = '年齡',fieldName = 'age',Type = 'Integer') private Integer age; @Column(fieldCnName = '性別',fieldName = 'sex') private String sex;}

set,get方法沒有貼上來。具體的用法就是這樣了。然后我們說說注解與反射的關系,怎么用反射獲取注解。

通過反射獲取注解

不會反射的請看上一篇文章,8000字為你講懂反射,然后再回來看這篇注解的文章。上代碼直接

//獲取Class類 Class clazz = Student.class; //獲取類上面的注解 Entity entity = (Entity) clazz.getAnnotation(Entity.class); System.out.println(entity.cnName()+entity.tableName()); //獲取所有該類聲明的屬性 Field fields[] = clazz.getDeclaredFields(); for (Field field:fields){ //獲取對應屬性上面的注解 Column column = field.getAnnotation(Column.class); System.out.println(column.fieldCnName()); }

這個運行結果是

學生表student姓名年齡性別

很簡單是不是。懂了嗎?懂了的話關注走一波?精彩美文每天為你推送,喜歡手機看文章的還可以(wx search 全棧學習筆記)!

反射注解一起使用拼寫SQL語句實戰演練

其實這一部分你懂反射和注解就會了,通過反射和注解你可以實現一個簡單的萬能的增刪改查。貼個新增的SQL語句代碼吧!

//insert into student_test(student_id,student_name,student_sex) values (1,'Jack','男') StringBuilder sql = new StringBuilder(); Class clazz = object.getClass(); sql.append('insert into '); //獲取類上面的注解 Entity entity = (Entity) clazz.getAnnotation(Entity.class); sql.append(entity.tableName()); sql.append('('); Field[] fields = clazz.getDeclaredFields(); for(Field field:fields){ sql.append(field.getAnnotation(Column.class).fieldName()).append(','); } sql.deleteCharAt(sql.length()-1); sql.append(')'); sql.append(' values ('); for(Field field:fields){ field.setAccessible(true); Object value = field.get(object); if(value.getClass().equals(String.class)){ sql.append(''').append(value).append(''').append(','); }else { sql.append(value).append(','); } } sql.deleteCharAt(sql.length()-1); sql.append(')'); System.out.println(sql.toString()); return sql.toString();

結語:覺得文章不錯的,帶上原文鏈接,歡迎轉發,如果你發現文章中有錯誤可以評論或者私信我,及時修改!(wx search 全棧學習筆記)精彩美文每天為你推送!

以上就是JAVA注解相關知識總結的詳細內容,更多關于JAVA注解的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩国产欧| 久久婷婷激情| 久久亚洲欧洲| 欧美~级网站不卡| 在线日韩中文| 欧美理论视频| 妖精视频成人观看www| 午夜国产精品视频免费体验区| 91高清一区| 亚洲一区成人| 偷拍亚洲精品| 国产欧美丝祙| 国产欧美激情| 国产一区二区精品久| 成人片免费看| 99热国内精品| 首页亚洲欧美制服丝腿| 亚洲日本三级| 欧美日本久久| 精品国产一级| 精品日韩视频| 欧美日韩精品一本二本三本| 日韩影院免费视频| 久久狠狠亚洲综合| 狠狠久久伊人中文字幕| 中文在线免费视频| 91成人精品在线| 亚洲在线一区| 国产成人久久精品麻豆二区| 中文字幕成人| 中文在线资源| 免费国产自久久久久三四区久久 | 免费久久精品视频| 日本视频在线一区| 国产成年精品| 黄色亚洲大片免费在线观看| 亚洲在线久久| 久久久久久久欧美精品| 色偷偷色偷偷色偷偷在线视频| 国产一区二区三区视频在线| 国产精品字幕| 国产亚洲午夜| 日韩av中文字幕一区二区| 亚洲精品中文字幕99999| 国产精品一页| jizzjizz中国精品麻豆| 日韩亚洲国产欧美| 四虎在线精品| 麻豆一区二区99久久久久| 黑森林国产精品av| 九九综合在线| 伊人精品在线| 久久久天天操| 极品日韩av| 蜜臀精品一区二区三区在线观看| 亚洲精选成人| 久久亚州av| 99精品美女| 国产午夜久久| 久久不见久久见中文字幕免费| 日韩免费一区| 中文字幕亚洲在线观看| 69堂免费精品视频在线播放| 国产中文欧美日韩在线| 日韩视频不卡| 天堂精品久久久久| 国产精品第十页| 黑人精品一区| 欧美午夜不卡| 日韩国产精品久久久久久亚洲| 麻豆久久久久久久| 亚洲午夜av| 奇米狠狠一区二区三区| 麻豆国产91在线播放| 香蕉成人久久| 日本不良网站在线观看| 日韩不卡一二三区| 欧美国产美女| 亚洲2区在线| 日韩精品免费一区二区在线观看| 日本成人在线一区| 狠狠操综合网| 精品久久中文| 欧美午夜网站| 在线精品亚洲| 一区二区三区四区在线看| 久久影院资源站| 亚洲2区在线| 99久久夜色精品国产亚洲1000部| 久久99偷拍| 日本不卡视频一二三区| 好吊视频一区二区三区四区| 日韩电影免费在线观看| 久久超级碰碰| 日韩**一区毛片| 日韩中文字幕一区二区三区| 99精品电影| 国产拍在线视频| 国产精品99久久免费观看| 婷婷久久免费视频| 欧美va天堂在线| 92国产精品| 91日韩欧美| 欧美极品一区二区三区| 日韩高清欧美激情| 日韩精品社区| 日韩区欧美区| 亚洲精品婷婷| 伊人久久亚洲| 香蕉视频成人在线观看| aa国产精品| 香蕉人人精品| 四季av一区二区凹凸精品| 久久久91麻豆精品国产一区| 国产麻豆精品久久| 国产精品一区二区中文字幕| 青青草国产成人99久久| 日本亚洲三级在线| 亚洲欧美日本日韩| 国产亚洲网站| 久久av在线| 久久一二三区| 国产一区亚洲| 99在线精品视频在线观看| jiujiure精品视频播放| 精品在线播放| 国产亚洲精品久久久久婷婷瑜伽| 久久中文亚洲字幕| 久久久精品五月天| 久久久久久美女精品| 欧美影院三区| 午夜av一区| 欧美日韩国产探花| 亚洲小说欧美另类婷婷| 一区二区小说| 美女久久网站| 婷婷精品在线| 国产精品玖玖玖在线资源| 欧美成人精品午夜一区二区| 精品视频网站| 成人日韩在线观看| 99在线精品免费视频九九视| 人人爽香蕉精品| 偷拍亚洲精品| 麻豆精品在线| 99久久婷婷这里只有精品| 亚洲欧美日韩国产一区二区| 亚洲欧美日本国产| 欧美日韩亚洲一区| 红杏一区二区三区| 亚洲电影在线| 亚洲一区二区三区久久久| 91亚洲无吗| 国产一区2区在线观看| 亚洲午夜精品久久久久久app| 热久久国产精品| 久久激五月天综合精品| 国产精品高颜值在线观看| 欧美在线影院| 日本中文字幕不卡| 精品国产麻豆| 亚洲女同一区| 欧美日韩在线精品一区二区三区激情综合| 国产精品久久777777毛茸茸| 中文字幕色婷婷在线视频| 午夜在线视频一区二区区别| 国产欧美日韩一区二区三区四区| 91亚洲成人| 久久香蕉精品| 麻豆久久久久久久| 国产在线欧美| 日本不卡一区二区| 国产中文在线播放| 免费成人在线观看| 欧美激情麻豆| 欧美成人综合| 国产午夜久久av| 999精品色在线播放| 亚欧洲精品视频在线观看| 精品久久97| 先锋影音久久久| 久久精品一区二区国产| 日韩午夜一区| 精品国产一区二区三区噜噜噜| 五月婷婷亚洲| 美女久久99| 国产美女精品| 日产精品一区二区| 综合国产视频| 日本蜜桃在线观看视频| 日韩精品视频一区二区三区| 久久精选视频| 欧美激情麻豆| 国产亚洲综合精品| 国产一区二区精品久| 免费观看久久久4p| 欧美aa一级| 国产精品综合| 久久亚洲欧洲| 成人日韩在线观看|