Alex_TD

Java 注解 反射

注解:Java.lang.annotation;

1.定义: public @interface 注解名{String value(); int age();int id() default ""};

2.编译器中注解:@Override  @Deprecated  @SuppressWarnings   @Target( ElementType={ })  @Rentation(RentationPolicy={}) @Documented @Inherited

3. 自定义注解 @interface test{         }

反射:java.lang.reflection   java.lang.Class     (Pojo  属性  set/get   无参构造,  toString())

1.反射机制:获取类的任何内部信息,直接操作属性和方法。 

2.Class类和获取Class类实例 :  类.Class    对象.getClass()  Class.forName("  ") Integer.Type   类.class.getSuperClass();

                1.Class 本身也是一个类

                2.Class对象只能有系统建立对象

                3.一个加载的类在JVM中只会有一个Class实例

                4.一个Class对象对应的事一个加载到JVM里的一个.class文件

                5.每个类的实例都会记得自己是由哪个Class实例所生成的。

                6.通过Class可以完整的得到一个类中的所有被加载的结构

                7.Class类的Reflection的根源,针对任何你想动态加载、运行的类,唯有先获得相应的Class对象。

 

3.类的加载与ClassLoader

       1.加载.class 文件  2.验证:class文件是否符合jvm规范;准备:static,类变量 分配内存;解析:

  3.初始化:《clint》

   ClassLoader.getSystemclassloader();

        System.getProperty("java.class.path")

    根加载器null ----->   扩展类加载器  -------->   系统类加载器

4.创建运行时类的对象

      Class 

   getName() 

   getSimpleName() 

    getFields()    getDeclaredFields()

    getMehtods()  getDeclaredMthods()   getMethod("方法名","参数类型.class")

  getConstruct()

    newInstance()

    属性和方法都有setAcessible(true)

5.获取运行时类的完整结构

 f= Class . getAnotation(注解.class)     f.value();

  Field .getAnnotation(注解.class)      

6.调用运行时类的指定结构

 

posted on 2020-01-26 20:55  Alex_TD  阅读(196)  评论(0编辑  收藏  举报