这篇文章主要介绍了Java基于反射机制获取不同类的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
创新互联是由多位在大型网络公司、广告设计公司的优秀设计人员和策划人员组成的一个具有丰富经验的团队,其中包括网站策划、网页美工、网站程序员、网页设计师、平面广告设计师、网络营销人员及形象策划。承接:网站制作、成都网站建设、网站改版、网页设计制作、网站建设与维护、网络推广、数据库开发,以高性价比制作企业网站、行业门户平台等全方位的服务。什么是反射机制
Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键(在运行阶段可以改变其结构)
特点:
1、极大的提高了程序的灵活性和扩展性,降低模块的耦合性,提高自身的适应能力
2、通过反射机制可以让程序创建和控制任何类的对象,无需提前硬编码目标类
3、能够在运行时构造一个类的对象、判断一个类所具有的成员变量和方法、调用一个对象的方法(包括 private),可能会有安全隐患
4、是构建框架技术的基础所在,使用反射可以避免将代码写死在框架中
5、包含动态类型,而 JVM 不能对动态代码优化,所以效率会比较低
在Java中可以通过Reflection APIs在运行时动态生成class实体,通过Constructor创建类实例、Field访问成员属性、Method调用方法
Class类
在Java中,每个 class 都有一个相应的 Class 对象。在编译完成后,在生成的.class文件中,会产生一个Class对象,用于表示这个类的类型信息。
特点:
1、由系统创建Class类
2、同一个类的实例指向同一个Class对象
3、通过Class可以完整的得到一个类所有被加载的结构
4、Class类是Java反射的基础
获得Class类的方法:
public class MyReflect { public static void main(String[] args) throws ClassNotFoundException { Teacher t = new Teacher(); // 1、通过对象获得 Class c1 = t.getClass(); // 2、forName + 全限定名 获得 Class c2 = Class.forName("reflect.Teacher"); // 3、通过类名获得 Class c3 = Teacher.class; // 4、基本数据类型的Type属性获得 Class c4 = Double.TYPE; // 5、通过子类的Class对象获得 Class c5 = c1.getSuperclass(); } } class Person { String name; public Person() { } } class Teacher extends Person { public Teacher() { } }