Java的反射机制同意你在程序执行的过程中获取类定义的细节。有时候在程序执行的时候才得知要调用哪个方法,这时候反射机制就派上用场了。

获取类

类的获取方法有下面几种:

  • forName()。通过Class.forName()获取与字符串向相应的类。

    比方\lstinline{Class.forName("java.lang.String");}。

  • getClass()。每一个对象都有这种方法。比方\lstinline{Foo foo; ...; foo.getClass();}。
  • 类名.class。直接通过类名获取这个类的反射对象。比方String.class。
  • 基本类型的类。

    比方Integer.TYPE。

    这样的方法与Integer.class是由差别的。一个是基本类型(Primitive type)。一个是复合类型(Composition)。

获取构造函数

获取构造函数由下面几种方法:

  • getConstructor(Class[] params)。获取公共的构造函数。

  • getConstructors()
  • getDeclaredConstructor(Class[] params)。获取全部构造函数。
  • getDeclaredConstructors()

获取构造函数之后能够通过newInstance生成一个新的实例。

获取字段

获取字段的方法有下面几种:

  • getField(String name)。获取公共的字段。
  • getFields()。

  • getDeclaredField(String name)。获取全部的字段。
  • getDeclaredFields()

获取字段之后能够通过getDouble getInt等方法获取变量的值。也能够通过setDouble setInt等方法给变量赋值。

获取成员方法

获取方法的方法有下面几种:

  • getMethod(String name, Class[] params)。获取公共的方法。

  • getMethods()
  • getDeclaredMethod(String name, Class[] params)。

    获取全部的方法。

  • getDeclaredMethods()

获取成员方法之后能够调用invoke方法运行该方法。

数组

数组也是一个特殊的类型,因此Java中提供了java.lang.reflect.Array实现数组的动态操作。创建一个数组能够调用newInstance(type, count)方法,获取一个元素能够通过get(array, index)。

Java反射机制的使用方法的更多相关文章

  1. Java反射机制二 获取方法的返回值或参数的泛型信息

    在使用反射机制时,我们经常需要知道方法的参数和返回值类型,很简单  ,下面上示例,示例中的两个方法非常相似 package deadLockThread; import java.lang.refle ...

  2. Java反射机制调用私有方法

    1.获取目标类: 每个类都有一个class属性,通过实体类的class属性获取: Class clazz = Person.class 通过对象获取.  Person p1 = new Person( ...

  3. java反射机制(基础版)

    package com.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import ja ...

  4. Java反射机制(带应用)

    1.Java的反射机制:        Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态 ...

  5. java反射机制(访问私有字段和私有方法)

    来自:http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html 尽管我们通常认为通过JAVA的反射机制来访 ...

  6. Java反射机制demo(五)—获得并调用一个类中的方法

    Java反射机制demo(五)—获得并调用一个类中的方法 这个demo在使用反射机制操作属性之前,主要原因是因为在.class文件字节码中,方法排在属性的前面. 1,获得一个类中的方法 先看一下方法和 ...

  7. Java反射机制一 概念和简单的使用方法。

    一 概念 java反射机制属于 java动态性之一  ,指的是可以运行时加载,探知,使用编译期间完全未知的类,程序在运行状态中,可以动态的加载一个只有, 名称的类,对于任意一个已加载的类,都能够知道这 ...

  8. 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】

    方法1:通过get()方法获取属性值 package com.sxd.test.controller; public class FirstCa{ private Integer num; priva ...

  9. Java反射机制调用对象的方法 —— 将一个对象的属性值赋值给另一个对象的属性

    模拟一个场景: 众所周知,EasyExcel导出Excel文档是依赖于注解完成的,在实体类需要导出的属性上面加上注解,导出的时候会自动识别该属性. 假如我们现在需要导出用户的信息,又不想污染原本的实体 ...

随机推荐

  1. MSSQL奇技淫巧

    MSSQL:获得库每个表的记录数和容量 sp_msforeachtable是MS未公开的存储过程: exec sp_msforeachtable @command1="print '?'&q ...

  2. Vmware Briged方式使虚拟机上网

    1.禁用掉在网络连接VMware Network Adapter VMnet1和VMware Network Adapter VMnet8 (在bridged这种方式下不需要这两个连接,如下图) 2. ...

  3. VMware Workstation 9.0 安装苹果Mac OS X10.9系统

    摘自:http://www.wuwenhui.cn/3133.html 一.安装所需要的软件: 1.VMware Workstation 9.0 点击下载 2.unlock-all-v110.zip  ...

  4. C/C++取出变量的每一位的值(第一次知道还有QBitArray)

    前写程序最多也只是字节级别操作,用char和memcpy进行一系列内存操作.此次一个sdk,其状态值直接是每位一个标示,所以需要取出每位进行操作.当然CPP也有丰富的位运算操作,但是虽然也学过,知道意 ...

  5. 新鲜出炉的Using Qt 3D to visualize music

    http://blog.qt.io/blog/2016/01/27/using-qt-3d-visualize-music/

  6. VS2008 Project : error PRJ0019: 某个工具从以下位置返回了错误代码: "正在执行生成后事件..."解决方案

    右键工程属性 -> 配置属性 -> 生成事件 ->生成后事件,命令行中的路径加上双引号,如 copy $(ProjectDir)\export\win32\Debug\$(Proje ...

  7. NOI08冬令营 数据结构的提炼与压缩

    无聊随手翻,翻到了一个这样的好东西--据结构的提炼与压缩: 为了防止以后忘记,这里把论文里的题目都纪录一下吧. 1.二维结构的化简 问题一:ural 1568 Train car sorting 定义 ...

  8. [TroubleShootin]The backup set holds a backup of a database other than the existing 'xxdb' database.

     One: he backup set holds a backup of a database other than the existing 'xxdb' database Sometime ...

  9. 使用ViewPager模拟实现应用程序启动界面

    经常在开发应用程序的时候,软件启动有启用动画界面,一般使用图片来进行界面该版本最新更新等等内容,今天来使用ViewPager来模拟实现这功能,也希望对大家有个小小的参考作用,在以后的项目中能够使用到. ...

  10. XSS漏洞解决方案之一:过滤器

    一:web.xml文件 <!-- 解决xss漏洞 --> <filter> <filter-name>xssFilter</filter-name>   ...