美文网首页
java反射机制

java反射机制

作者: xmfaly | 来源:发表于2017-11-26 19:34 被阅读0次

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

Class对象

可以直接通过类.class获取。
例如获取String的class对象

Class cls = String.class;

也可以通过类名进行获取

Class cls = Class.forName("java.lang.String");

类名

可以通过class对象的getName()方法获取类名,getSimpleName()获取不带包名的类名

//带包类名
String name = cls.getName();

//不带包名的类名
String simpleName = cls.getSimpleName();

方法

Method[] methods = cls.getMethods();

getMethods()可以获取到该类中所有的public方法
也可以获取到单个方法

Method method = cls.getMethod("method",new Class[]{String.class});

第一个参数是方法的名字,第二个参数是方法的参数,这里是以只有一个string类型的参数为例。如果没有参数传入null即可
如果已经知道方法,也可以获取到方法的参数

Class[] parameterTypes = method.getParameterTypes();

当然也可以返回方法的返回类型

Class returnType = method.getReturnType();

可以通过invoke()方法来调用方法需要传2个参数,第一个参数是调用方法的对象,如果是静态方法可以传入null第二个参数是方法需要的参数列表

Object returnValue = method.invoke(null, "parameter");

构造方法

构造方法和普通方法类似

Constructor[] constructors = cls.getConstructors();
Constructor constructor = cls.getConstructor(new Class[]{String.class});
Class[] parameterTypes = constructor.getParameterTypes();

可以使用constructornewInstance()方法实例一个对象

String str = (String) constructor.newInstance("test");

属性

Field[] fields = cls.getFields();
Field field = cls.getField("name");

可以通过getFields()方法获取所有的public属性,getField()获取指定的方法,当然也只能获取public的属性。
在反射中也可以获取private的属性和方法以下分别进行演示

Package pack = cls.getPackage();

父类

java是单继承最多一个父类

Class supercls = cls.getSuperclass();

实现的接口

一个类可以实现多个接口

Class[] interfaces = cls.getInterfaces();

这里只会返回该类实现的接口,而不会返回父类实现的接口

文章参考
https://baike.baidu.com/item/JAVA%E5%8F%8D%E5%B0%84%E6%9C%BA%E5%88%B6/6015990?fr=aladdin
http://www.jianshu.com/p/2315dda64ad2

相关文章

  • 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/ovgkbxtx.html