电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

詳解Java進階知識注解

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

注解

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

注解的作用分類

編寫文檔:通過代碼里表示的元數據生成文檔【生成doc文檔】 代碼分析:通過代碼里表示的元數據進行分析【使用反射】 編譯檢查:通過代碼里表示的元數據讓編譯器能夠實現基本的編譯檢查【Override】

注解按照運行機制分類

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

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

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

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

元注解:用于描述注解的注解,在創建注解時使用

1. @Target屬性值:

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

2.@Retention屬性值:

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

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

三、自定義注解1、自定義注解基礎知識

1.格式:

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

2.注解本質:注解的本質上就是一個接口,該接口默認繼承Annotation

public interface MyAnno extends java.lang.annotation.Annotion

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

屬性的返回值:

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

屬性賦值注意事項

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

自定義注解annotation

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

使用以上注解的類TestAnnotation

//name具有默認值,不需要必須為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('成績為:');int[] score=annotation.score();for (int score1:score){ System.out.print(score1+' ');} }}

運行結果

詳解Java進階知識注解

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

兩個方法:

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

1.創建自定義注解

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

2.創建實體類

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.創建測試類,測試注解

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.運行結果

詳解Java進階知識注解

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

標簽: Java
相關文章:
主站蜘蛛池模板: 防锈油-助焊剂-光学玻璃清洗剂-贝塔防锈油生产厂家 | 包装机_厂家_价格-山东包装机有限公司 | 电加热导热油炉-空气加热器-导热油加热器-翅片电加热管-科安达机械 | 「银杏树」银杏树行情价格_银杏树种植_山东程锦园林 | AR开发公司_AR增强现实_AR工业_AR巡检|上海集英科技 | 三轴曲线机-端子插拔力试验机|华杰仪器 | 阳光模拟试验箱_高低温试验箱_高低温冲击试验箱_快速温变试验箱|东莞市赛思检测设备有限公司 | LZ-373测厚仪-华瑞VOC气体检测仪-个人有毒气体检测仪-厂家-深圳市深博瑞仪器仪表有限公司 | 净化车间装修_合肥厂房无尘室设计_合肥工厂洁净工程装修公司-安徽盛世和居装饰 | 润滑脂-高温润滑脂-轴承润滑脂-食品级润滑油-索科润滑油脂厂家 | 物联网卡_物联网卡购买平台_移动物联网卡办理_移动联通电信流量卡通信模组采购平台? | 首页-浙江橙树网络技术有限公司 石磨面粉机|石磨面粉机械|石磨面粉机组|石磨面粉成套设备-河南成立粮油机械有限公司 | 火锅底料批发-串串香技术培训[川禾川调官网] | 欧版反击式破碎机-欧版反击破-矿山石料破碎生产线-青州奥凯诺机械 | 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | 高压绝缘垫-红色配电房绝缘垫-绿色高压绝缘地毯-上海苏海电气 | 澳洁干洗店加盟-洗衣店干洗连锁「澳洁干洗免费一对一贴心服务」 干洗加盟网-洗衣店品牌排行-干洗设备价格-干洗连锁加盟指南 | 温泉机设备|温泉小镇规划设计|碳酸泉设备 - 大连连邦温泉科技 | 冷镦机-多工位冷镦机-高速冷镦机厂家-温州金诺机械设备制造有限公司 | 快速卷帘门_硬质快速卷帘门-西朗门业 | 工业铝型材-铝合金电机壳-铝排-气动执行器-山东永恒能源集团有限公司 | 富森高压水枪-柴油驱动-养殖场高压清洗机-山东龙腾环保科技有限公司 | 鼓风干燥箱_真空烘箱_高温干燥箱_恒温培养箱-上海笃特科学仪器 | 新能源汽车电池软连接,铜铝复合膜柔性连接,电力母排-容发智能科技(无锡)有限公司 | 烽火安全网_加密软件、神盾软件官网 | 海日牌清洗剂-打造带电清洗剂、工业清洗剂等清洗剂国内一线品牌 海外整合营销-独立站营销-社交媒体运营_广州甲壳虫跨境网络服务 | sus630/303cu不锈钢棒,440C/430F/17-4ph不锈钢研磨棒-江苏德镍金属科技有限公司 | 深圳市宏康仪器科技有限公司-模拟高空低压试验箱-高温防爆试验箱-温控短路试验箱【官网】 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 背压阀|减压器|不锈钢减压器|减压阀|卫生级背压阀|单向阀|背压阀厂家-上海沃原自控阀门有限公司 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 外观设计_设备外观设计_外观设计公司_产品外观设计_机械设备外观设计_东莞工业设计公司-意品深蓝 | 中山市派格家具有限公司【官网】 | 全国冰箱|空调|洗衣机|热水器|燃气灶维修服务平台-百修家电 | 滁州高低温冲击试验箱厂家_安徽高低温试验箱价格|安徽希尔伯特 | 广东风淋室_广东风淋室厂家_广东风淋室价格_广州开源_传递窗_FFU-广州开源净化科技有限公司 | 一礼通 (www.yilitong.com)-企业礼品解决方案一站式服务平台 | 芝麻黑-芝麻黑石材厂家-永峰石业 | 重庆私家花园设计-别墅花园-庭院-景观设计-重庆彩木园林建设有限公司 | 上海赞永| 税筹星_灵活用工平台_企业财务顾问_财税法薪综合服务平台 | 医院专用门厂家报价-医用病房门尺寸大全-抗菌木门品牌推荐 |