Java反射机制的使用方法
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反射机制的使用方法的更多相关文章
- Java反射机制二 获取方法的返回值或参数的泛型信息
在使用反射机制时,我们经常需要知道方法的参数和返回值类型,很简单 ,下面上示例,示例中的两个方法非常相似 package deadLockThread; import java.lang.refle ...
- Java反射机制调用私有方法
1.获取目标类: 每个类都有一个class属性,通过实体类的class属性获取: Class clazz = Person.class 通过对象获取. Person p1 = new Person( ...
- java反射机制(基础版)
package com.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import ja ...
- Java反射机制(带应用)
1.Java的反射机制: Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态 ...
- java反射机制(访问私有字段和私有方法)
来自:http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html 尽管我们通常认为通过JAVA的反射机制来访 ...
- Java反射机制demo(五)—获得并调用一个类中的方法
Java反射机制demo(五)—获得并调用一个类中的方法 这个demo在使用反射机制操作属性之前,主要原因是因为在.class文件字节码中,方法排在属性的前面. 1,获得一个类中的方法 先看一下方法和 ...
- Java反射机制一 概念和简单的使用方法。
一 概念 java反射机制属于 java动态性之一 ,指的是可以运行时加载,探知,使用编译期间完全未知的类,程序在运行状态中,可以动态的加载一个只有, 名称的类,对于任意一个已加载的类,都能够知道这 ...
- 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】
方法1:通过get()方法获取属性值 package com.sxd.test.controller; public class FirstCa{ private Integer num; priva ...
- Java反射机制调用对象的方法 —— 将一个对象的属性值赋值给另一个对象的属性
模拟一个场景: 众所周知,EasyExcel导出Excel文档是依赖于注解完成的,在实体类需要导出的属性上面加上注解,导出的时候会自动识别该属性. 假如我们现在需要导出用户的信息,又不想污染原本的实体 ...
随机推荐
- 07-IOSCore - CoreData补充、音频视频
xml被plist取代了 数据库被coredata取代了 一.Core Data 高级补充 1. Core Data 本质是什么?操作数据库的数据 ORM Object Relationship M ...
- Handler不同线程间的通信
转http://www.iteye.com/problems/69457 Activity启动后点击一个界面按钮后会开启一个服务(暂定为padService),在padService中会启动一个线程( ...
- 利用java concurrent 包实现日志写数据库的并发处理
一.概述 在很多系统中,往往需要将各种操作写入数据库(比如客户端发起的操作). 最简单的做法是,封装一个公共的写日志的api,各个操作中调用该api完成自己操作日志的入库.但因为入数据库效率比较低,如 ...
- SQL之概念
SQL即结构化查询语言,是一个功能强大的数据库语言,可以分为: 1.DML即数据操作语言,用于检索或者修改数据: 2.DDL即数据定义语言,用于定义数据的结构,如创建.修改.删除等: 3.DCL即数据 ...
- 饭卡(HDOJ2546)
饭卡 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- 遗传算法Matlab源程序
参考自: http://blog.163.com/zhaoshuyu_thomas/blog/static/461929072009103034816716/ 大家内容上可以参考上述文章,但其代码有很 ...
- uboot代码2:stage2代码,启动内核
一.uboot最终目的: 1.读出内核 do_nand read kernel { flash上存的内核:uImage = 头部 + 真正的内核; } 2.启动内核. do_bootm_linux { ...
- Java基础12 类型转换与多态
链接地址:http://www.cnblogs.com/vamei/archive/2013/04/01/2992662.html 作者:Vamei 出处:http://www.cnblogs.com ...
- SOLR搭建企业搜索平台
一. SOLR搭建企业搜索平台 运行环境: 运行容器:Tomcat6.0.20 Solr版本:apache-solr-1.4.0 分词器:mmseg4j-1.6.2 词库:sogou-dic ...
- ASP.NET、WinForm、C# - 配置文件信息读取 [ Web.config || Appconfig ]
<configuration> <appSettings> <add key="name" value="HF_Ultrastrong&qu ...