学习目标:初步了解Java反射的用法
- 初步接触java中的反射相关知识与用法
学习内容:
- 反射的概念与强大之处
- 获得Class类的几种方式
- 具有Class对象的类型
学习时间:
40分钟
学习产出:
1、反射的概念及强大之处
Reflection(反射)是Java动态运行的关键所在,反射机制允许程序在执行期间获得任何类的内部信息,并可直接操作任意对象的属性及方法。
2、获得Class类的几种方式
public class ReflectionDemo extends Object{
public static void main(String[] args) throws ClassNotFoundException {
/*
通过反射获取类的class对象
一个类在内存中只有一个Class对象,类一旦被加载,Class对象将包含类的整个结构
*/
User user = new Manager();
System.out.println("这个人是:" + user.name);
// 获取Class的几种方式
// 方式一:通过对象获得
Class c1 = user.getClass();
System.out.println(c1.hashCode());
// 方式二:forName获得
Class c2 = Class.forName("notation.Manager");
System.out.println(c2.hashCode());
// 方式三:通过类名.class获得
Class c3 = Manager.class;
System.out.println(c3.hashCode());
}
}
// 实体类
class User {
public String name;
public int id;
public int age;
}
class Manager extends User {
public Manager() {
this.name = "管理员";
}
}
3、具有Class对象的类型
public class ReflectionDemo2 {
public static void main(String[] args) {
Class c1 = Object.class; // 类
Class c2 = Comparable.class; // 接口
Class c3 = String[].class; // 一维数组
Class c4 = int[][].class; // 二维数组
Class c5 = Override.class; // 注解
Class c6 = ElementType.class; // 枚举
Class c7 = Integer.class; // 基本数据类型
Class c8 = void.class; // void
Class c9 = Class.class; // Class
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
System.out.println(c5);
System.out.println(c6);
System.out.println(c7);
System.out.println(c8);
System.out.println(c9);
}
}