java 注解与反射

java 注解与反射 

学习笔记:

1.注解:注释给计算机理解

英文:Annotation

2.注解不是必须的,但是会因为程序的需要

3. 三种java内置类型:Override、Deprecated、Supresswarnings(不在编译器上显示警告信息,需要提供参数),

4. 元注解(meta_annotation) : 

  @Target 便是我们注解的使用位置,METHOD、CLASS

  @Retention 在什么级别保存注释信息,描述注解的生命周期  runtime>class>sources

  @Documented 将注解生成在JAVAdoc中

  @Inherited 子类可以继承父类

 

5.自定义注解

使用@interface定义方法名

注解的蚕食若无默认值,注解时则需显式赋值

一个参数时用value(),注解时则不用 value=,直接赋值

 

6 java 通过反射变成动态语言

7.查看是否是同一个对象,对比hashcodde

 

8 Class 类,不同与关键字class,Class本身是一个java类,描述的是其他类的类型信息

Class对象只能由系统建立;通过Class可以得到一个类中所有被加载的结构;Class类是Reflection的根源;

Person p = new Person();

Class c1 = new Person();

对比就可看出Class如同Person一样是一个java类!

扫盲:很多类型都可以有Class对象

9.类初始化,jvm启动,先初始化main()所在类,初始化子类时父类没被加载会先去搞父类

不初始化,子类调用父类常量不会初始化子类、父类,常量已经在常量池中了,

Son son[] = new Son();不会初始化Son,即数组定义类引用

 

10:类的加载过程 :

类的加载Load:字节码load到内存,将静态数据调入方法区,生成java.lang.Class对象

链接Link:

               验证:符合jvm规范

                准备:类变量分配方法区内存,设置默认值

                解析:常量池的符号引用(常量名)替换为直接引用(地址)     

初始化:Initialize: 

               执行类构造器<clinit>():类变量赋值,静态代码块合并;

               初始化子父类;

               jvm保证clinit()方法多线程安全

 

11.反射获取类,对象,方法,字段

newInstance()时类中必须有无参构造,否则通过构造器方法创建对象getDeclaredConstructor(),未写参数类型则返回所有构造器

反射获取方法后,invoke()调用方法,同时需要传递所需参数;

若Method,Constructor,Field 为private则需setAccessble(true)

12.注解可以获取泛型信息

13 ORM:   object relationship mapping 对象关系映射

利用反射获取注解,注解上加入数据库相应信息甚至sql语句,再利用反射获取注解进行操作,完成类与表结构的映射

 

14.注意,反射是创建的是运行时类的对象工具,即反射获取运行时类的完整结构,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值