JavaSE基础 (三十四)

Annocation(注释 注解)

注释

单行注释 //
多行注释 /*   */
文档注释 /**  */

注解

注解的写法

@xxxx[{一些信息}]

注解放在哪里

类的上面  属性的上面 方法的上面 构造方法的上面 参数的前面

注解的作用

1.用来充当注释的作用(仅仅是一个文字说明)@deprecated
2.用来做代码的检测(验证)    @Override
3.可以携带一些信息(内容)    文件.properties.xml 注解

Java中有一些写好的注解给我们使用

@Deprecated   用来说明方法是废弃的
@Override     用来做代码检测 检测此方法是否重写
@SuppressWarnings(信息)  String[]  {""}如果数组内的元素只有一个长度  可以省略()
unused   变量定义后未被使用
serial   类实现了序列化接口  不添加序列化ID号
rawtypes  集合没有定义泛型
deprecation 方法以废弃
*unchecked  出现了泛型问题 可以不检测
all       包含以上所有(不推荐)

注解中可以携带信息 可以不携带

信息不能随便写 信息类型只能是如下的类型
1.基本数据类型
2.String数据类型
3.枚举数据类型
4.注解类型@
5.数组类型[] 数组的内部需要加上的四种类型

如何自己描述一个注解类型

1.通过@interface 定义个新的注解类型
2.发现写法与接口非常相似
  可以描述public static final 的属性 比较少见
  可以描述public abstract的方法 方法返回值必须有 返回值类型是如上那些
3.我们自己定义的注解拿来使用
     光定义还不够还需要做很多细致的说明(需要利用java提供好的注解来说明)
     元注解(也是注解 不是拿来使用的 是用来说明注解)
     @target 描述当前的注解可以放在哪里写
     @retention 描述当前的这个注解存在什么作用域中的
            源代码文件---->编译---->字节码文件---->加载--->内存执行
            SOURCE                    CLASS                  RUNTIME
     @Inherited  描述当前这个注解能否被子类对象继承
     @Document   描述这个注解能否生成文档

我们使用自己描述的注解

问题1.注解里面描述了一个方法 方法没有参数 方法有返回值String[]
     使用注解的时候让我们传递参数
     理解为 注解的方法做事 将我们传递的参数 搬运走了给了别人
问题2.使用别人写好的注解不用写方法名 我们自己定义的方法必须写名字
     如果我们自己定义的注解 只有一个方法名字叫value
     在使用的时候可以省略方法名
     如果传递的信息是一个数组 数组内只有一个元素 可以省略{}
     如果是两个以上 每一个方法必须写名字