Annotation加注法,python 注解annotation
1.注释概述2。自定义注释3。注释用法4。注释处理器5。元注释6。注释使用场景。
1.评论概述
注解概念:解释程序。为了电脑。注释概念:用文字描述程序。对于程序员来说。
注释是在Java代码中添加“额外”信息的一种方式。
注释中的描述是一种人为的约定javac在编译时对它“视而不见”。只有固定语法,没有标准形式定义:注释,也称为元数据。代码级别的描述。是JDK1.5及以后版本引入的特性,和类、接口、枚举是一个级别的。可以在包、类、字段、方法、局部变量、方法参数等前面声明。来解释和评论这些元素。概念描述:
* JDK 1.5之后的新功能
*解释程序
*使用注释:@注释名
作用分类:
代码中的编写文档:标识的注解生成文档【生成单据凭证】
代码中的代码分析:标识的注解对代码进行分析【使用反射】。
编译检查:让代码中的标识的注解[覆盖]到编译器能够实现基本的编译检查。
JDK中预定义的一些注解:
* @Override:检查此批注标记的方法是否继承自父类(接口)
* @Deprecated:此注释所标记的内容表明它已经过时。
* @SuppressWarnings:取消警告
*通常传递参数all @ suppresswarnings ("all ")
2.自定义注释自定义注解格式:
元注释
public @interface {
定义主体
}
本质: Annotation本质上是一个接口,默认继承了Annotation接口。
公共接口MyAnno扩展Java . lang . annotation . annotation { }
属性:接口中的抽象方法
要求:
1.属性的返回值类型具有以下值
基本数据类型字符串枚举注释以上类型的数组2。属性是定义好的,使用时需要给它们赋值。
如果在定义属性时使用默认的初始化值,那么在使用注释时可以省略属性的赋值。如果只需要分配一个属性,并且属性的名称是value,那么可以省略value,直接定义value。分配数组时,该值用{}包装。如果数组中只有一个值,{}可以省略注释:
形式上,它与接口定义非常相似;@不可或缺;注释不能相互继承:
自定义注释体的描述:
格式类似于接口中的方法定义,但意义完全不同。方法名是数据的名称、方法的返回值类型和数据值的类型比如,截图中的定义:两个方法。定义表明注释包含两个数据。这些两个数据的名称分别是maxAge和minAge,它们的返回值是int类型。给注解中的数据赋值有两种方式:
使用注释时,在定义每个数据时会为每个注释赋予默认值,默认值用于在使用过程中未分配的数据。但是,注意引用类型的数据。对其默认值不能取null!!!使用注释时,如果注释名为value,并且只需要分配名为value的数据,则可以缩写。3.注释使用的注意事项。定义某一类型的标注实际上就是定义某一类型的额外信息的“标准形式”。。
当使用每个特定的注释时,必须保证注释中的每个数据不能有不确定的值!!
现在,我们已经完成了注释的定义和使用。接下来,我们可以创建一个学生对象,并将其年龄值初始化为1000,以查看该对象是否可以成功创建。
还是发现成功了(注释没有效果),为什么?
4.注释处理器注解的本质是什么?
它用于表达代码之外的额外信息。至于这些信息是用来做什么的,和注释本身无关。
注解处理器:利用反射等技术获取附加标注信息,完成一些特殊功能。
下面,我们使用注释,结合我们的自定义注释处理器,来实现以下需求:
定义一个有两个成员的学生类,姓名和年龄。
名称中包含的字符数不得超过指定值(特定约束信息-注释)
年龄必须在指定范围内(特定约束信息-注释)
并且姓名和年龄符合创建学生对象的条件;否则,将引发异常。(这种效果是由注释处理器实现的)
5.元注释注解的保存级别:
SOURCE:注释会被编译器丢弃(class文件中没有)CLASS:注释在class文件中可用,但会被JVM丢弃(内存不可用)RUNTIME:JVM在运行时也会保留注释信息注解默认情况下的保留级别是CLASS(运行时已经没了)。
在定义自定义注解时,用元注解都可以,声明自定义注解的一些特殊属性都可以。
Java提供了四种元注释,其中前两种是最常用的。
1.@Target此批注用于声明和限定批注使用的地方ElementType取值:
类型:可以作用于类方法:可以作用于方法字段:可以作用于成员变量2。@ Rentention该注释用于声明注释的保留级别@Retention(RetentionPolicy.RUNTIME):当前描述的注释将在保留到class字节码文件和被JVM读取到中。
3.@ Documented:描述评论是否在抽取到api文档。
4.@Inherited:描述注释是否被子类继承。
6.注释1.在配置文件中的使用场景:
优点:可配置,不用改源码缺点:不直观,开发效率低2.注解中:
优点:直观的开发效率缺点:硬编码,修改后需要重新编译运行3.注解的应用场合:
JunitServletSpring??
在程序中使用(解析)注释:获取注释中定义的属性值。
1.获取由注释定义的位置的对象(类、方法、字段)。
2.获取指定的注释。
* getAnnotation(类)
//实际上是在内存中生成注释接口的一个子类实现对象。
公共类ProImpl实现Pro { public String class name(){ return cn . it cast . annotation . demo 1 };} public String method name(){ return show ;}}调用注释中的抽象方法,获取配置的属性值。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。