java 反射机制
来源:互联网 发布:java用户登录权限 编辑:程序博客网 时间:2024/06/08 04:44
反射机制:
指的是可以于运行时加载,探知,使用编译期间完全未知的类。程序在运行状态中,可以动态加载一个只有名称的类,对于任意一个;已加载的类,都能知道这个类的所有方法
属性;对于任意一个对象,都能够调用它的任意一个方法和属性,加载完类之后,在堆内存中,就产生了一个Class类型的对象,(一个类只有一个Class对象 )这个对象就包含了完整
的类的结构信息,我们可以通过这个对象看到类的结构,这个对象就像一面镜子,形象的称为:反射
Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注解是一种接口。 每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的
组都共享该 Class 对 象。基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也 表示为 Class 对象。
Class 类是整个 Java 反射机制的源头,Class 类本身表示 Java 对象的类型,获取 Class 对象的方法有很多种,比如我们可通过 Class clazz = 类.class 方式获得某个类的 Class实例
方式说明1.通过类名获得类实例
Class 类实例 = 类名.class
1. 这种方法获得类对象比较直接
2. 对于基本类型来说,他们也有自己的类对象,
并且要获 得基本类型的类对象,只能通过类型名.class来获得类对象。
例如 Class intClass = int.class;
2. 通过 Class 的 forName 方法加载类获得类实例
Class 类实例 = Class.forName("类名"); 1. Class.forName("类名");注意这种方式,类名必须是带有 完整的包名。
例如 Class.forName("com.mysql.jdbc.Driver");
2. 这种加载类的方式在编译阶段就会进行实例化,类 名.class 方式是执行阶段类加载给虚拟机时才进行实例化 3.通过类的实例化对象获得类实例
Class类实例 = 具体对象.getClass() getClass()方法源自于 Object 类,所有的类的实例化对象均 可通过 getClass()方法获得所属类的类实例对象
以上是获得 Class 类实例的方法,在实际应用中,根据实际应用场合选择方法,所知信息为类名, 就使用类名.class 方式,所知信息为对象,就使用对象.getClass()方式。
在得到 Class 类实例后,根据 Class 类实例就可以得到所属类的各种信息了,首先是类的整体信息
API
获取类的成员属性 API
方式说明Field getField(String name)根据变量名,返回一个具体的具有 public 属性的成 员属性 Field[] getFields()返回具有 public 属性的成员属性数组 Field DeclaredField(String name) 根据变量名返回一个成员变量(不分 public 和非 public 属性)Field[] DeclaredFields()返回所有成员变量组成的数组(不分 public 和非 public 属性)
获取类的成员方法 API
方式说明Method getMethod(String name, Class<?>... parameterTypes)
根据方法名和参数类型,返回一个具体的 具有 public 属性的方法 Method[] getMethods() 返回所有具有 public 属性的方法数组,包 括从父类继承的public方法和实现接口的 public 方法 Method getDeclaredMethod(String name, Class<?>... parameterTypes)
根据方法名和参数类型,返回一个具体的 方法(不分 public 和非 public 属性) Method[] getDeclaredMethods() 返回该类中的所有声明的方法数组(不分 public 和非 public 属性)
获取类的构造方法 API
方法名说明
Contructor getConstructor(Class<?>... parameterTypes)根据构造方法的参数类型,返回一个具 体的具有 public 属性的构造方法 Contructor getConstructor() 返回所有具有 public 属性的构造方法数 组
Constructor getDeclaredConstructors(Class<?>... parameterTypes)
根据构造方法的参数类型,返回一个具 体的构造方法(不分 public 和非 public 属性) Constructor getDeclaredConstructors() 返回该类中所有的构造方法数组(不分 public 和非 public 属性)
- 【反射】JAVA反射机制
- 【Java】JAVA反射机制
- Java 反射机制[Field反射]
- Java 反射机制[Method反射]
- Java反射机制笔记-反射机制
- java的反射机制
- Java的反射机制
- java反射机制详解!
- Java反射机制
- Java的反射机制
- java 反射机制--侯捷
- java反射机制
- java反射机制
- [候捷]Java反射机制
- java 反射机制
- java 反射机制初探
- 关于Java反射机制
- java反射机制
- 改造二叉树
- responseBody注解
- 瞎搞DP 改造二叉树
- leetcode Add to List 425. Word Squares
- 【javascript设计模式】1.Constructor(构造器)模式
- java 反射机制
- 南阳 oj119 线段树 区间最值
- Monthly Expense + Copying Books + Aggressive cows
- PYTHON中对象命名的单下划线与双下划线的区别(私有和保护)
- hdu1166-分治&线段树-敌兵布阵
- spark学习网站
- python数据库操作模块MySQLdb简介
- Request和response使用
- 学习笔记 二叉树