JAVAWEB注释概述

注释基础
1.注释概念:
注释:
给人看的提示信息,人看了以后提示信息了解程序的内容。
Java中注释的格式:// // / */
注解:
Sun在jdk5.0开始提供的新特性
给程序看的提示信息,程序看后可以根据有无注释及注解上属 性的值的不同配置执行不同的逻辑
Java中的注解的格式:@AnnoName(key=value,…)
**注解在开发中,可以作为轻量化配置来使用,比起使用xml作为配置文件,更加的轻便易用,在java开发中大量的使用。
2.jdk内置注解
@Override
声明重写父类方法的注解,要求编译器帮我们检查是否成功的覆盖,
如果没有成功覆盖父类的方法,编译器会进行报错提示。
@Deprecated
声明方法被过时,不在建议使用,要求编译器在编译的过程中对于 这样的方法的调用提出警告,提示方法过时。
@SupperssWarnings
压制警告,提示编译器,在编译的过程中队指定类型的警告不在提示。
自定义开发注解:
A. 开发一个注解类
开发一个注解类的过程,非常类似于开发一个接口,只不过需要通 过@interface关键字来声明。
B. 使用元注解修饰注解的声明
所谓的元注解是用来修饰注解声明的注解,可以控制被修饰的注解的特性。
I. @Target
用来声明被修饰的注解可以用在什么位置
可以在@Target的属性中设置ElementType类型的数组来指定可以使用的位置
如果不用此元注解修饰,默认注解可以用在任意位置。
II. @Retention
用来声明被修饰的注释被保留到什么阶段。
可以在该注解的属性中通过RetentionPolicy类型的值来指定注解保留到何时。
A) RetentionPolicy.SOURCE
此注释将会保留到源码阶段,.java中,在编译过程中被删除。
这类类型的注解通常是给编译器看的。
B) RetentionPolicy.CLASS
此注解将会被保留在源码阶段和编译阶段,.java和.class中,在类加载的过程中被删除。
C) RetentionPolicy.RUNTIME
此注解将会保留在源码阶段、编译阶段和运行阶段, .java .class和内存中的字节码都会存在。
这种类型的注解通常用来在运行阶段进行反射,控制程序运行过程。
**只有RUNTIME级别的注解才可以通过反射技术进行反射。
III. @Documented
用来声明被修饰注解是否要被文档提取工具提取到文档中。
默认不提取。
IV. @Inherited
被修饰的注解是否具有继承性
默认没有继承性
C. 为注解增加属性
为注解类声明属性的过程非常类似于为接口定义方法。
但要求,注解中的所有的属性必须是public的,可以显示声明,也可以不声明,不声明默认就是public的。
注解中的属性只能是八大种基本数据类型 String类型、Class类型其他注解类型及以上类型的一位数组。
注解中声明的属性 需要在使用时 为其赋值 赋值的方式就是使用注解时 在注解后跟一对小括号 在其中 通过 属性名=属性值 的方式 指定属性值。
可以通过default设置属性的默认值,也可以手动赋值,覆盖默认值。
如果属性是一位数组类型,而在传入的数组中 只有一个值 则包括数组的大括号可以省略。
如果注解的属性 只有一个需要赋值 且该属性的名称叫做value则在使用注解时value=可以不写。
3.反射注解
a. 反射注解的原理
retentionPolicy.RUNTIM级别的注解会保留到运行期,可以通过反射技术获取,从而可以根据是否有注解 或 注解属性值的不同控制程序按照不同的方式运行。
以下反射相关的类型中都提供了反射注解的方法:
类 Class、;类 Method、类field、类constructor、
类Package

b. 反射注解案例
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@interface level{
String value();
}

@level(“交警”)
class Police{
}

public class AnnoTest{
public static void main(String[] args){
System.out.println(“敬礼,您好,您超速了,罚款200元”);
If(Public.class.isAnnotationPresent(level.class)){
Level anno = Police.class.getAnnotation(level.class);
If(“协警”.equals(anno.value())){
System.out.println(“哥们,少罚点”);
}else if(“交警”.equals(anno.value())){
System.out.println(“哥们抽根烟,这是200块,收好我走人”);
}else if(“刑警”.equals(anno.value())){
System.out.println(“赶紧交钱走人”);
}else{
System.out.println(“xxx”);
}
}else{
System.out.println(“打一顿,扭送警察局”);
}
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值