JAVA注解和反射

注解 Annotation:

不是程序本身,可以对程序做出解释,可以被其他程序(比如编译器)读取
注解以“@注释名”在代码中存在,还可以添加一些参数值,例如: @SuppressWarnings(value=“uncheked”)
注解使用位置:
可以附加在package,class,method,field上面,相当于添加了额外的辅助信息,可以通过反射机制编程实现对这些元数据的访问。

内置注解

@Override:表示一个方法重写了另一个方法
@Deprecated:废弃过时的,不建议使用,通常是危险的或者有更好的替代方法
@SuppressWarning:镇压某种警告

元注解meta-annotation

负责注解其他注解,JAVA定义了四个标准的元注解类型;
@Target:用于描述注解的适用范围(可以用在哪些地方)
@Retention:表示需要在什么级别保存注释该信息,用于描述注解的生命周期(SOURCE<CLASS<RUNTIME)
@Document:说明该注解将被包含在javadoc中
@Inherited:说明子类可以继承父类中的该注解

自定义一个注解:

使用@interface:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

反射 reflection

静态语言与动态语言:

动态语言:运行时代码可以根据某些条件改变自身结构,例如 Object-c, c#, JavaScript,PHP, Python
静态语言:即运行时结构不可变, 如Java, C, C++。 java不是动态语言,但被称为准动态语言,因为可以利用反射机制获得类似动态语言的特性。(同时增加了不安全性)

**通过反射获得class对象:

Class c=Class.forName(“com.kuang.reflection.User”);**
可以获得多次但都是同一个class对象,因为一个类在内存中只有一个class对象。
一个类被加载后,整个结构都会被封装在class对象中
在这里插入图片描述

提供的功能在这里插入图片描述

优缺点在这里插入图片描述

class类

在这里插入图片描述

class类的常用方法

在这里插入图片描述

获取Class类实例的方法

在这里插入图片描述

哪些类型有Class对象:

在这里插入图片描述

Java内存分析

在这里插入图片描述
注:方法区又叫元空间
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

类的初始化:

什么时候发生?
在这里插入图片描述

类加载器

在这里插入图片描述
在这里插入图片描述

创建运行时类的对象:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

动态创建对象执行方法:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

性能对比分析:

反射调用关闭检查即setAccessible(true)
在这里插入图片描述

反射操作泛型

在这里插入图片描述

反射操作注解

看不太懂,以后再回头看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值