zoukankan      html  css  js  c++  java
  • JavaSE_注解和反射

    注解

    元注解:注解其他注解

    • @Target:描述注解适用范围
    • @Retention:需要什么级别保存该注解信息,用于描述注解生命周期(SOURCE < CLASS < RUNTIME )
    • @Document:说明该注解被包含在Javadoc中
    • @Inherited:说明子类可以继承父类的该注解

    自定义注解

    • @interface
    • 声明一个配置参数
    • 用default声明参数默认值
    • 如果只有一个参数成员,参数名为value
    • 注解元素必须要有值

    反射

    获得反射对象

    Class c = Class.getName("...");
    System.out.println(a);
    

    Class类

    • Class本身是一个类
    • 一个加载的类在JVM中只会有一个Class实例
    • 一个Class对象对应的是一个加载到JVM中的一个class文件
    • Class类是Reflection根源,针对任何你想动态加载、运行的类,需要先获得相应的Class对象

    Java内存分析

    • 堆: 存放new的对象和数组,可以被所有线程共享,不会存放别的对象引用
    • 栈:存放基本变量类型,引用对象的变量
    • 方法区:可以被所有线程共享,包含所有的class和static变量

    类加载的过程:类的加载 -> 类的链接 -> 类的初始化

    • 类的加载:将class文件字节码内容加载到内存中,将这些静态数据转换成方法区的运行时数据结构,生成代表这个类的java.lang.Class对象
    • 类的链接:将java类的二进制代码合并到JVM运行状态中
    • 类的初始化:
    1. 执行构造器()方法,将所有类变量赋值动作和静态代码块中的语句合并
    2. 当初始化一个类的时候,发现其父类还没有初始化,先触发其父类初始化

    类初始化

    • 类的主动引用一定发生类的初始化
      main、new一个对象、调用静态成员和静态方法、使用reflect、初始化一个类初始化其父类

    • 类的被动引用不会发生初始化
      子类访问父类静态变量、数组定义类引用、引用常量

    类加载器

    源程序(.java) -> java编译器 -> 字节码文件(.class) -> 类装载器 -> 字节码校验器 -> 解释器

    • 引导类加载器: Java核心库(rt.jar)
    • 扩展类加载器
    • 系统类加载器
  • 相关阅读:
    HTML的基本知识
    java script后续
    java script
    CSS
    DAY 33 进程理论与进程方法
    DAY 32 UDP协议、Socketserver模块,并发编程基础
    DAY 30 网络编程基础
    DAY 25多态、反射、异常处理
    DAY 24继承与组合
    DAY 23 面向对象(二)
  • 原文地址:https://www.cnblogs.com/Hot-machine/p/13192960.html
Copyright © 2011-2022 走看看