美文网首页
Java反射机制

Java反射机制

作者: chad_it | 来源:发表于2017-01-16 21:20 被阅读12次

通过反射创建一个对象(三步)
第一步:获取类的信息
参数:包名+类名
Class class = Class.forName("com.javawu.reflect.Demo");
第二步:获取类的构造方法
参数:构造方法需要传递的参数的Class
Constructor constructor = class.getConstructor(String.class, int.class);
第三步:根据获取到的构造方法传递相应的参数创建对象
Demo demo = (Demo)constructor.newInstance("张三", 55);

反射机制是什么

反射机制是在运行状态中,对于任意一个类,能够知道这个类的所有属性和方法,对于任意一个对象,能够调用它的任意一个方法和属性。
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的放射机制。

反射机制能做什么

  • 在运行时判断任意一个对象所属的类
  • 在运行时构造任意一个类的对象
  • 在运行时判断任意一个类所具有的成员变量和方法
  • 在运行时调用任意一个对象的方法
  • 生成动态代理

获取类的类信息

//参数需要带上类所在的包名
Class class = Class.forName("com.javawu.reflect.Person");

获取类中的所有公有构造方法

Constructor[] constructors = class.getConstructors();

获取类中的所有的共有的和私有的构造方法

constructors = class.getDeclaredConstructors();

获取某个构造方法

  • 获取不带参的构造方法
Constructor constructor = class.getConstructor();
  • 获取参数为String和int类型的构造方法
constructor = class.getConstructor(String.class, int.class);
//传递数组参数
//Class[] params = {String.class, int.class};
//class.getConstructor(params);
  • 当构造方法为private时,需要设置访问权限
constructor.setAccessible(true);
  • 根据构造方法创建该类的对象
person = (Person)constructor.newInstance("参数");

获取构造方法名

constructor.getName();

获取构造方法的参数的Class数组

Class[] params = constructor.getParemeterTypes();

获取类中的所有public方法(包括父类的方法)

Method[] methods = class.getMethods();

获取类中所有的方法(不包括父类的方法)

methods = class.getDeclaredMethods();

获取指定方法名和参数的方法

//第一个参数:方法的名字 第二个参数:方法的参数的Class
Method method = class.getMethod("eat", null);

调用方法

Person person = new Person();
//第一个参数:执行方法的对象 第二个参数:方法的参数
method.invoke(person, null);

调用静态方法

method.invoke(null, 参数)

获取类中的所有public属性

Field[] fields = class.getFields();

获取类中的所有属性

fields = class.getDeclaredFields();

获取指定属性名的属性

Field field = calss.getField("name");

相关文章

  • Java反射机制入门

    Java反射机制入门 一、什么是反射 JAVA反射机制(The JAVA reflection mechanism...

  • 反射之一

    总结内容源自一下文章粗浅看java反射机制反射机制应用实践谈谈java反射机制Java Reflection(反射...

  • 反射之二

    总结内容源自一下文章粗浅看java反射机制反射机制应用实践谈谈java反射机制Java Reflection(反射...

  • Java基础之反射

    Java基础之—反射(非常重要)Java中反射机制详解Java进阶之reflection(反射机制)——反射概念与...

  • 反射之三

    总结内容源自以下文章 粗浅看java反射机制 反射机制应用实践 谈谈java反射机制 Java Reflectio...

  • java反射机制

    java的反射机制 1 JAVA的反射机制是什么?反射机制能做什么?反射机制的优点与缺点2 认识 Class...

  • Java中反射的用途

    Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在。灵活掌握Java反射机制,对大家以后学习框...

  • Chapter 13 . 反射机制

    阅读原文 Chapter 13 . 反射机制 13.1 Java反射机制研究及应用 Java Reflection...

  • 详解Java反射机制(Reflection)

    详解Java反射机制(Reflection) 反射机制的作用 JAVA反射机制是在运行状态中,对于任意一个类,都能...

  • Java 反射机制

    [1]. java反射详解[2]. Java Reflection(反射机制)详解[3]. 深入理解Java类型...

网友评论

      本文标题:Java反射机制

      本文链接:https://www.haomeiwen.com/subject/mxmhbttx.html