注解和反射

注解

可以附加再package,class,methods,filed

内置注解

@Override 重写

@Deprecated 过期的

@SuppressWarnings 镇压警告

 

元注解(Java.lang.annotion)

@Target 用于描述注解的使用范围(package,class,methods,filed)

@Retention 表示需要在什么级别保存该注释信息,用于描述注释的生命周期(SOURCE<CLASS<RUNTIME)

@Document 说明该注解将被包含在javadoc中

@Inherited 说明子类可以继承父类中的该注解

自定义一个注解

@Target(ElementType.METHOD)  //ElementType 枚举类
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
@interface annotionTest{
   String test() default null;  //参数类型 默认值为null
}

反射(java.Reflection)

java变成动态语言的关键

优点:可以实现动态创建对象和编译,体现出很大的灵活性

缺点:对性能有影响,使用反射基本上是一种解释操作,我们可以告诉jvm,我们希望他做什么然后让它来满足我们的要求。所以操作总是慢一步

反射机制提供的功能

  1. 在运行时判断任意一个对象所属的类

  2. 在运行时构造任意一个类的对象

  3. 在运行时判断任意一个类所具有的成员变量和方法

  4. 在运行时获取泛型信息

  5. 在运行时调用任意一个对象的成员变量和方法

  6. 在运行时处理注解

  7. 生成动态代理

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对象的一个数组



posted on 2021-10-26 16:47  我叫福禄娃  阅读(25)  评论(0编辑  收藏  举报