java 27 - 5 反射之 通过反射获取成员方法并使用
类Method:提供关于类或接口上单独某个方法(以及如何访问该方法)的信息。
A:获取所有方法 数组
1、getMethods 获取该类包括其父类的公共成员方法
2、getDeclaredMethods 获取该类的所有的成员方法
B:获取单个方法
1、getMethod 获取该类所有的公共类单个成员方法
2、getDeclaredMethod 获取该类所有类型的单个成员方法
A.1:获取该类包括其父类的公共成员方法
//获取字节码文件
Class c = Class.forName("zl_Relfect_01.Person"); //获得该类与父类的所有的公共成员方法
Method[] m1 = c.getMethods();
for(Method m : m1){
System.out.println(m);
}
A.2:getDeclaredMethods 获取该类的所有的成员方法
//获取字节码文件
Class c = Class.forName("zl_Relfect_01.Person");
//获取该类的所有类型的成员方法
Method[] m1 = c.getDeclaredMethods();
for(Method m : m1){
System.out.println(m);
}
B:获取单个成员方法:
//获取字节码文件
Class c = Class.forName("zl_Relfect_01.Person");
//无参构造创建对象
Constructor con = c.getConstructor();
Object obj = con.newInstance(); //获取该类单个无参无返回值公共类型的成员方法
//无参的成员方法,只需写成员方法的名称
Method m1 = c.getMethod("show");
// public Object invoke(Object obj,Object... args) 返回值是Object接收,第一个参数表示对象是谁,第二参数表示调用该方法的实际参数
//show是无参,无返回值构造
m1.invoke(obj);//调用Person类的show方法 //获取该类单个有参有返回值公共类型的成员方法
Method m2 = c.getMethod("method", String.class);
//没有返回值
m2.invoke(obj, "哈喽");////调用Person类的method方法 //获取该类单个有参有返回值公共类型的成员方法
Method m3 = c.getMethod("getString", String.class,int.class);
//有返回值, public Object invoke(Object obj,Object... args) 返回值是Object接收
Object ob1 = m3.invoke(obj, "哈喽",123);
System.out.println(ob1); //获取该类单个 无参无返回值的私有成员方法
Method m4 = c.getDeclaredMethod("function");
//取消语言访问检查
m4.setAccessible(true);
//调用Person类的function方法
m4.invoke(obj);
java 27 - 5 反射之 通过反射获取成员方法并使用的更多相关文章
- 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】
方法1:通过get()方法获取属性值 package com.sxd.test.controller; public class FirstCa{ private Integer num; priva ...
- JAVA基础 (二)反射 深入解析反射机制
在谈论到反射这个问题时,你是否有例如以下疑问? 不管是在.NET还是Java中反射的原理和机制是一样的,理解了一种还有一种就能够迎刃而解,想要理解反射首先须要了解底层的一些概念和执行.理解了反射有助于 ...
- Java 反射机制[Method反射]
Java 反射机制[Method反射] 接着上一篇Java 反射机制[Field反射],通过调用Person类的setName方法将obj的name字段的Value设置为"callPerso ...
- Java基础 -- 深入理解Java类型信息(Class对象)与反射机制
一 RTTI概念 认识Claa对象之前,先来了解一个概念,RTTI(Run-Time Type Identification)运行时类型识别,对于这个词一直是 C++ 中的概念,至于Java中出现RT ...
- Java高级篇(四)——反射
之前写到了设计模式的代理模式,因为下一篇动态代理等内容需要用到反射的知识,所以在之前Java篇的基础上再写一篇有关反射的内容,还是以实际的程序为主,了解反射是做什么的.应该怎么用. 一.什么是反射 反 ...
- XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)
XML序列化 #region 序列化 /// <summary> /// XML序列化 /// </summary> /// <param name="ob ...
- Java之旅(2)—反射
1. 概念 反射就是将java类中的各种成分映射成对应的java类.之前我们已经讲过了Class类,也明确了一个java类中用一个Class类的对象来表示,一个类中的组成部分有:成员变量,方法 ...
- 我对java的理解(二)——反射是小偷的万能钥匙
在我们生活中,车上或者路上有时候会遇到一种很讨厌的人——“小偷”,趁我们不注意或者疏忽的时候拿走属于我们的东西.更有甚者,趁我们不在家的时候,手持一把万能钥匙,打开我们的房门,悠闲的查看房间的布置,翻 ...
- Java基础:(七)反射
一.什么是反射 理解反射之前,先要搞懂一件事情,类加载到底是怎么一回事? 类加载相当于Class对象的加载.每个类都有一个Class对象,包含了与类有关的信息.当编译一个新类时,会产生一个同名的.cl ...
- java 反射和暴力反射 两个DEMO
</pre><pre code_snippet_id="402084" snippet_file_name="blog_20140622_5_93502 ...
随机推荐
- Failed to push selection: Read-only file system的解决方法
1.获得root权限:adb root 2.设置/system为可读写:adb remount 3.将hosts文件复制到PC:adb pull /system/usr/keylayout/mtk-k ...
- UIButton、UILabel、UITextField 初学者需要了解的基本定义和常用设置
以下是三个IOS开发中最常用的控件,作为IOS基础学习教程知识 ,初学者需要了解其基本定义和常用设置,以便在开发在熟练运用. UIButton按钮 第一.UIButton的定义 UIButton * ...
- iOS事件响应链
首先,当发生事件响应时,必须知道由谁来响应事件.在IOS中,由响应者链来对事件进行响应,所有事件响应的类都是UIResponder的子类,响应者链是一个由不同对象组成的层次结构,其中的每个对象将依次获 ...
- php curl 发送 json 数据
$urlcon= 'http://localhost/******.php'; $data=' { "button":[ { "type":"clic ...
- java 语言规范 java language specifications
在线地址: https://docs.oracle.com/javase/specs/ java语言规范下载: 链接:http://pan.baidu.com/s/1miEpJwk 密码:f89v j ...
- ror 在windows下开发的坑
虽然知道ror在windows下的坑很多很多,但是目前没有先将就入门学习,也不折腾了.后面等待新机器来了,用linux来搭平台,先记录一下遇到的坑. 1.views/layouts/applicati ...
- python 打印对象的所有属性值
def prn_obj(obj): print '\n'.join(['%s:%s' % item for item in obj.__dict__.items()])
- 资源list:Github上关于大数据的开源项目、论文等合集
Awesome Big Data A curated list of awesome big data frameworks, resources and other awesomeness. Ins ...
- spring annotation简述
一.Annotation基本概念 Annotation是jdk5以后出现的新特性,在jdk中,其内置了许多自己的Annotation,例如@Override,@SuppresWarning,@Depr ...
- IIS7配置PHP图解(转)
IIS7+PHP_5.2.17 于之前安装IIS的时候已经选上了isapi扩展和isapi筛选,这里就不用另外再添加角色服务了,直接开始 先修改php.ini文件.. 把c:\php下的php.ini ...