javas

注解

注解是给Java编译器提供的说明。
可以标注Java包、类型、构造方法、方法、字段、参数和局部变量。
注解和注解类型:注解类型是一种特殊的接口类型。注解是注解类型的一个实例。
java定义了一套注解,共有7个,3个在java.lang中,剩下4个在java.lang.annotation中。
作用在代码中国呢的注解有三个,他们分别是:

  • @Override :重写标记,一般用在子类继承父类方法后,标注在重写过后的子类方法上。如果发现其父类或者引用的接口中没有该方法时,会报编译错误。
  • @Deprecated : 用来标记注解的代码已经过时,不再推荐使用。
  • @SuppressWarnings : 这个注解起到忽略编译器的警告的作用。

元注解有四个,元注解的作用就是负责注解其他注解,Java定义了4个标准的meta-annotation类型,他们被用来提供对其他annotation类型作说明。
这四个分别是:

  • @Retention:表示如何存储,是指在代码中还是编入class文件中,或者在运行时可以通过反射访问。
  • RetentinoPolicy.SOURCE: 注解只保留在源文件中,当java文件编译成class文件后,注解被遗弃。
  • RetentionPolicy.CLASS: 注解被保留在class文件,但jvm加载class文件时候被遗弃,这是 默认的生命周期。
  • RetentionPolicy.RUNTIME: 注解不仅保留在class文件中,jvm加载class文件之后,仍然存在;
  • @Documented:标记这些注解是否包含在JavaDoc中。
  • @Target : 标记这个注解说明了Ammotation所修饰的对象范围。
  • @Inherited: 标记这个注解是继承于哪个类的。

从JDK1.7开始,又添加了三个额外的注解,它们分别是

  • @SafeVarargs: 在声明可变参数的构造方法或者方法时,java编译器会报unchecked警告。使用@SafeVarargs可以忽略这些警告。
  • @FunctionInterface: 表明这个方法是一个函数是接口。
  • @Repeatable: 表示某注解可以在同一个声明上使用多次。

注解是不支持继承的。

反射

1. 概述

动态语言:是一类在运行时可以改变其结构的语言。
静态语言:运行时不可变的语言就是静态语言。java不是动态语言,但java可以称为准动态语言,就是因为反射机制。
反射(reflection)是java被视为动态语言的关键,反射机制允许程序在执行期间借助于Reflection api取得任何类的内部信息,并能操作对象的内部属性和方法。
uGV8K9
通过对象获取类,通过对象看得到类的结构。

2. 作用