3d布衣图精华布衣树官网

  • 时间:
  • 浏览:6
  • 来源:赌博启示录

怎样理解 java 注解和运用注解编程?

注解和使用

先来看下概念首先从注释来看;

注释:给代码添加说明和解释,注释帮助开发人员理解程序。(comment)说白点就是注释是给人看的。

注解:给代码添加说明解释,这个说明给程序使用。(annotation)

从 jdk 5.0 开始,java 增加了对元数据(metadata) 的支持, 也就是annotation(注解)。

三个基本的 annotation:

@override:限定重写父类方法, 该注解只能用于方法

@deprecated:用于表示某个程序元素(类, 方法等)已过时

@suppresswarnings: 抑制编译器警告.

什么是注解

annotation其实就是代码里的特殊标记, 它用于替代配置文件,也就是说,传统方式通过配置文件告诉类如何运行,有了注解技术后,开发人员可以通过注解告诉类如何运行。在java技术里注解的典型应用是:可以通过反射技术去得到类里面的注解,以决定怎么去运行类。

注解技术的要点:

如何定义注解

如何反射注解,并根据反射的注解信息,决定如何去运行类

2.1 自定义注解:

定义新的 annotation 类型使用@interface关键字

声明注解的属性

注解属性的作用:原来写在配置文件中的信息,可以通过注解的属性进行描述。annotation的属性声明方式:string name();属性默认值声明方式:stringname() default “xxx”;特殊属性value:如果注解中有一个名称value的属性,那么使用注解时可以省略value=部分,如@myannotation(“xxx")特殊属性value[];

注解属性的类型可以是: string类型 基本数据类型 class类型 枚举类型 注解类型 以上类型的一维数组

案例演示1 创建和使用注解

public @interface myannocation { string name(); int num() default 10; myannocation2 anno();}public @interface myannocation2 { string value();}public class demo1 { @myannocation(name="哈哈",num=50,anno=@myannocation2(value = "xxx")) public void show() { system.out.println("xxxxxxx"); }}

2.2 jdk的元 annotation

元 annotation指修饰annotation的annotation。

@retention: 只能用于修饰一个 annotation 定义, 用于指定该 annotation 可以保留的域, @rentention 包含一个 retentionpolicy 类型的成员变量, 通过这个变量指定域。

retentionpolicy.class: 编译器将把注解记录在 class文件中. 当运行 java 程序时, jvm 不会保留注解. 这是默认值retentionpolicy.runtime:编译器将把注解记录在 class文件中. 当运行 java 程序时, jvm 会保留注解. 程序可以通过反射获取该注释retentionpolicy.source: 编译器直接丢弃这种策略的注释

@target:指定注解用于修饰类的哪个成员.@target 包含了一个名为value,类型为elementtype的成员变量。

@documented:用于指定被该元 annotation 修饰的annotation类将被 javadoc 工具提取成文档。

@inherited:被它修饰的 annotation 将具有继承性.如果某个类使用了被 @inherited 修饰的annotation,则其子类将自动具有该注解。

案例演示2 使用反射获取注解信息

@retention(retentionpolicy.runtime)public @interface personinfo { string name(); int age() default 20; string gender();}public class personope { @personinfo(name="李四",age=20,gender="男") public void show(string name,int age,string gen) { system.out.println(name); system.out.println(age); system.out.println(gen); }}public class demo2 { public static void main(string[] args) throws exception{ personope ope=new personope(); class<?> class1=personope.class; method method = class1.getmethod("show", string.class,int.class,string.class); personinfo annotation = method.getannotation(personinfo.class); string name=annotation.name(); int age=annotation.age(); string gender=annotation.gender(); method.invoke(ope, name,age,gender); }}

猜你喜欢

福彩3d字谜总汇二官网

安庆墙体打印机视频技术最前沿来源网络发布时间:2019-05-1001:33:01但也不能避免它会出现的故障,打印机厂家工作人员给使用者讲解出现的故障之一打印图案效果差,有的使

2019-09-17

七乐彩500期走势图官网

(中关村在线西安行情)近日,良田是一款性能出色的高拍仪,可帮助用户纸质文档转化为电子文档,该产品2048x1536dpi的分辨率,文字识别率出色。目前这款产品在商家“西安宇龙明

2019-09-17

3d走势图彩宝网8200平台

喜力啤酒在其工厂车间利用按需生产的3d打印工具和零件节省生产时间与成本全球桌面3d打印领军企业ultimaker今日宣布,喜力啤酒(heineken)借助于ultimaker提

2019-09-17

大乐透走势图表带坐标连线走势图平台

3d打印技术是一种数字自动化快速成型的新型技术,在国家创新教育政策支持下,各大高校纷纷开展了3d打印教育课程。近日,深圳市创想三维科技有限公司(以下简称创想三维)上海分公司工程

2019-09-17

福彩字谜图谜汇总正版藏机图平台

(中关村在线重庆行情)6018l黑白是个人节约型小型办公之选,18页/分钟a4,内存32mb,支持ufrii打印语言,支持多种打印方式,lbp6018w支持无线网络功能。机身小

2019-09-17