文章目录
一、注解
Annotation:@+注释名
- 不是程序本身,但可以对程序作出解释
- 可以被其他程序(比如:编译器等)读取
- 相当于添加了额外的辅助信息,可以通过
反射机制编程
实现对被注解标注的元数据的访问- 举例:@SuppressWarning(“all”):抑制编译时一些无关紧要的警告信息
二、反射
1.静态语言、动态语言
- 动态语言
在运行时代码可以根据某些条件改变自身结构
C#、JS、PHP、Python- 静态语言
与动态语言相对应
Java、C、C++
java可以称为准动态语言
,可以通过反射机制
获得类似动态语言的特性
2.Reflection(反射)
- 反射机制允许程序在
执行期间
借助Reflection API取得任何类的内部信息
,并且直接操作任意对象的内部属性及方法
Class c = Class.forName("java.lang.String");
- 加载完类后,在堆内存的
方法区
中会产生一个Class类型的对象(一个类只有一个Class对象)
,这个对象包含了完整的类的结构信息。- 优点:可以实现动态创建对象和编译,有很大的灵活性
- 缺点:对性能有影响