成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

Java Annotation注解相關原理代碼總結

瀏覽:2日期:2022-08-29 15:17:47

Java.lang 中自帶的注解

@Override:表示當前的方法定義將覆蓋基類的方法。如果你不小心拼寫錯誤,或者方法簽名被錯誤拼寫的時候,編譯器就會發出錯誤提示。 @Deprecated:如果使用該注解的元素被調用,編譯器就會發出警告信息。 @SuppressWarnings:關閉不當的編譯器警告信息。 @SafeVarargs:在 Java 7 中加入用于禁止對具有泛型varargs參數的方法或構造函數的調用方發出警告。 @FunctionalInterface:Java 8 中加入用于表示類型聲明為函數式接口

如何定義注解

以下是一個為標記注解(marker annotation), 不包含任何元素

package cn.haidnor.annotation;import java.lang.annotation.*;@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface Test { }

注解的定義也需要一些元注解(meta-annoation),比如 @Target 和 @Retention。

@Target 定義你的注解可以應用在哪里(例如是方法還是字段)。

@Retention 定義了注解在哪里可用,在源代碼中(SOURCE),class文件(CLASS)中或者是在運行時(RUNTIME)。

Demo 簡單實例

定義注解

以下的代碼中。Target 定義只能在方法上使用,Retention 定義保留域

package cn.haidnor.annotation;import java.lang.annotation.*;@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface UseCase { int id(); String description() default 'no description';}

在類中使用注解

package cn.haidnor.clazz;package cn.haidnor.clazz;import cn.haidnor.annotation.UseCase;import java.util.List;public class PasswordUtils { @UseCase(id = 47, description ='Passwords must contain at least one numeric') public boolean validatePassword(String passwd) { return (passwd.matches('w*dw*')); } @UseCase(id = 48) public String encryptPassword(String passwd) { return new StringBuilder(passwd).reverse().toString(); } @UseCase(id = 49, description = 'New passwords can’t equal previously used ones') public boolean checkForNewPassword( List<String> prevPasswords, String passwd) { return !prevPasswords.contains(passwd); }}

對以上 demo 中的代碼進行測試

package cn.haidnor.test;import cn.haidnor.annotation.UseCase;import cn.haidnor.clazz.PasswordUtils;import java.util.*;import java.util.function.Consumer;import java.util.stream.*;import java.lang.reflect.*;public class UseCaseTracker { public static void main(String[] args) { List<Integer> useCases = IntStream.range(44, 51).boxed().collect(Collectors.toList()); trackUseCases(useCases, PasswordUtils.class); } public static void trackUseCases(List<Integer> useCasesList, Class<?> clazz) { // getDeclaredMethods() 獲取所有公開的方法 for(Method m : clazz.getDeclaredMethods()) { // getAnnotation() 獲取指定注解 UseCase uc = m.getAnnotation(UseCase.class); if(uc != null) {System.out.print('Found Use Case ');// 提取注解元素值System.out.println(uc.id());// 提取注解元素值System.out.println(’t’ + uc.description());useCasesList.remove( Integer.valueOf( uc.id() ) ); } } // 迭代集合 useCasesList.forEach(new Consumer<Integer>() { @Override public void accept(Integer integer) {System.out.println('Missing use case ' + integer); } }); // 以上代碼可以使用箭頭行數簡寫 // useCasesList.forEach(i -> System.out.println('Missing use case ' + i)); }}

控制臺輸出結果

Found Use Case 47 Passwords must contain at least one numericFound Use Case 48 no descriptionFound Use Case 49 New passwords can’t equal previously used onesMissing use case 44Missing use case 45Missing use case 46Missing use case 50

元注解

Java 語言中目前有 5 種標準注解(前面介紹過),以及 5 種元注解。元注解用于注解其他的注解

Java Annotation注解相關原理代碼總結

注解中可以使用的元素

所有基本類型(int、float、boolean等)

String Class enum Annotation 以上類型的數組

其他類型,編譯器就會報錯。注意,也不允許使用任何包裝類型

注解的默認值

無論是在源代碼聲明時還是在注解接口中定義默認值時,都不能使用 null 作為其值。

import java.lang.annotation.*;@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface SimulatingNull { int id() default -1; String description() default '';}

使用反射獲取注解的方法流程圖

Java Annotation注解相關原理代碼總結

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

標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产亚洲视频系列| 欧美午夜电影在线播放| 国产精品九色蝌蚪自拍| 欧美亚洲国产bt| 欧美色视频在线观看| 午夜欧美精品久久久久久久| 先锋a资源在线看亚洲| 亚洲女人小视频在线观看| 欧美激情1区2区| 欧美一区二区三区四区在线观看地址| 成人丝袜高跟foot| 久久免费偷拍视频| 蜜桃精品在线观看| 91久久精品一区二区三区| 国产一区二区伦理片| 一区二区三区视频在线播放| 欧美激情1区| 亚洲欧美高清| 国产电影一区在线| 国产精品国产三级国产aⅴ中文 | 国产精品国产精品国产专区不蜜 | 在线视频观看日韩| 国产午夜精品一区二区三区四区| 成人黄色软件下载| 精品国产亚洲在线| av中文字幕在线不卡| 精品日韩在线一区| 91香蕉视频黄| 日本一区二区三区四区| 欧美激情1区2区3区| 国产视频亚洲色图| 激情综合网址| 亚洲综合另类小说| 久久一区二区三区av| 蜜桃久久av一区| 3atv在线一区二区三区| 精品一区二区精品| 欧美群妇大交群的观看方式| 国产一区二区0| 精品精品欲导航| 欧美激情1区2区| 樱花草国产18久久久久| 久久激情视频| 久久精品国产一区二区| 欧美高清性hdvideosex| 成人sese在线| 国产精品天美传媒| 亚洲久久视频| 亚洲成a人片在线不卡一二三区| 噜噜噜噜噜久久久久久91| 日韩精品欧美精品| 欧美精品xxxxbbbb| www.av精品| 国产精品毛片a∨一区二区三区| 国产日韩一区二区三区在线| 青青草91视频| 7777精品伊人久久久大香线蕉| 93久久精品日日躁夜夜躁欧美| 1024亚洲合集| 一本一道久久a久久精品| 国内精品国产三级国产a久久| 精品久久国产97色综合| 激情视频一区| 五月天激情小说综合| 欧美视频中文一区二区三区在线观看| 国产高清无密码一区二区三区| 久久久精品国产免大香伊| 日韩午夜黄色| 国产又粗又猛又爽又黄91精品| 国产日韩欧美精品综合| 亚洲人成久久| 久久99精品久久久久久动态图| 欧美v日韩v国产v| 亚洲三级国产| 久久精品国产99久久6| 久久久无码精品亚洲日韩按摩| 亚洲国内在线| 久久精品99久久久| 国产日本欧洲亚洲| 久久久精品午夜少妇| 国产成人在线电影| 中文一区在线播放| 色综合久久88色综合天天免费| 国产福利一区二区三区在线视频| 中文字幕一区二区三区在线播放| 久久香蕉精品| 97精品国产97久久久久久久久久久久| 一区二区三区四区五区视频在线观看 | 午夜精品一区二区三区免费视频 | 亚洲一区二区在线视频| 91精品婷婷国产综合久久性色| 亚洲无吗在线| 麻豆专区一区二区三区四区五区| 精品粉嫩aⅴ一区二区三区四区| 国产情侣一区| 高清久久久久久| 综合婷婷亚洲小说| 欧美精品三级在线观看| 136国产福利精品导航网址| 精品一区二区三区av| 亚洲日本免费电影| 日韩三级视频在线看| 亚洲一区三区视频在线观看| 成人黄色小视频在线观看| 亚洲国产精品一区二区www | 婷婷丁香久久五月婷婷| 欧美刺激午夜性久久久久久久| 中国成人亚色综合网站| 成人综合日日夜夜| 亚洲精品视频在线| 日韩欧美一区二区免费| 国产精品欧美日韩一区| 成人av网址在线观看| 视频一区二区国产| 欧美国产精品v| 欧美日韩电影在线播放| 一本一本久久a久久精品综合妖精| 国产福利一区二区三区视频| 亚洲一级二级三级在线免费观看| 精品国产成人在线影院| 久久久成人网| 欧美 日韩 国产精品免费观看| 麻豆国产精品一区二区三区| 亚洲三级久久久| 亚洲精品一区二区三区在线观看| 色呦呦网站一区| 亚洲福利国产| 99在线精品视频| 激情综合色丁香一区二区| 亚洲综合色在线| 欧美高清在线精品一区| 666欧美在线视频| 色婷婷av一区二区三区gif | 国产在线视频不卡二| 亚洲一级二级三级| 国产精品三级久久久久三级| 日韩小视频在线观看专区| 色欧美片视频在线观看| 99精品99| 国模精品娜娜一二三区| 成人激情综合网站| 久久99精品国产麻豆不卡| 亚洲一区二区免费视频| 国产精品国产三级国产普通话蜜臀| 日韩美女视频在线| 欧美日韩一区二区三区免费看 | 欧美成人乱码一区二区三区| 久久国产日韩| 亚洲伦理一区| 欧美精品三级| 91视频免费看| 成人午夜av在线| 国产精品自拍三区| 另类小说色综合网站| 亚洲一区免费观看| 亚洲欧美另类小说| 国产欧美日韩不卡| 久久久精品tv| 精品剧情v国产在线观看在线| 欧美日韩高清一区二区不卡| 91成人在线精品| 免费中文字幕日韩欧美| 亚洲国产专区| 精品1区2区| 午夜精品婷婷| 午夜激情一区| 欧美激情1区| 国产在线欧美| 国产综合色一区二区三区| 国产精品国产三级国产专区53| 午夜久久一区| 国产在线不卡| 亚洲区欧美区| 香蕉久久夜色精品国产| 午夜亚洲精品| 色综合久久久久久久久| 色屁屁一区二区| 在线一区二区视频| 欧美亚洲国产bt| 欧美高清视频不卡网| 欧美精品免费视频| 51精品视频一区二区三区| 777午夜精品视频在线播放| 在线播放91灌醉迷j高跟美女| 欧美日韩不卡一区二区| 欧美亚洲动漫精品| 欧美日韩精品综合在线| 欧美日韩亚洲综合在线| 欧美在线一二三| 在线成人免费视频| 91精品国产入口| 欧美mv日韩mv国产网站app| 精品国产伦一区二区三区观看体验 | 免费在线成人网| 精品一区二区三区久久久| 国产一区二区福利| 丁香桃色午夜亚洲一区二区三区| 国产aⅴ精品一区二区三区色成熟| 成人精品亚洲人成在线| 99久久国产综合精品麻豆|