注解
可以附加再package,class,methods,filed
内置注解
@Override 重写
@Deprecated 过期的
@SuppressWarnings 镇压警告
元注解(Java.lang.annotion)
@Target 用于描述注解的使用范围(package,class,methods,filed)
@Retention 表示需要在什么级别保存该注释信息,用于描述注释的生命周期(SOURCE<CLASS<RUNTIME)
@Document 说明该注解将被包含在javadoc中
@Inherited 说明子类可以继承父类中的该注解
自定义一个注解
反射(java.Reflection)
java变成准
动态语言的关键
优点:可以实现动态创建对象和编译,体现出很大的灵活性
缺点:对性能有影响,使用反射基本上是一种解释操作,我们可以告诉jvm,我们希望他做什么然后让它来满足我们的要求。所以操作总是慢一步
反射机制提供的功能
-
在运行时判断任意一个对象所属的类
-
在运行时构造任意一个类的对象
-
在运行时判断任意一个类所具有的成员变量和方法
-
在运行时获取泛型信息
-
在运行时调用任意一个对象的成员变量和方法
-
在运行时处理注解
-
生成动态代理
Class类的常用方法
方法名 | 功能 |
---|---|
static ClassForName(String name) | 返回指定类名name的Class对象 |
Object newInstance() | 调用缺省构造函数,返回Class对象的一个实例 |
getName() | 返回Class对象所表示的实体的名称 |
Class getSuperClass() | 返回当前Class对象的父类Class对象 |
Class[] getinterfaces() | 获取当前class对象的接口 |
ClassLoader getClassLoader() | 返回该类的类加载器 |
Constructor[] getConstructors() | 返回一个包含某些Constructor对象的数组 |
Method getMethod(String name,Class...T) | 返回一个Method对象,此对象的形参类型为paramType |
Filed[] getDeclaredFields() | 返回Field对象的一个数组 |