类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 反射之 通过反射获取成员方法并使用的更多相关文章

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

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

  2. JAVA基础 (二)反射 深入解析反射机制

    在谈论到反射这个问题时,你是否有例如以下疑问? 不管是在.NET还是Java中反射的原理和机制是一样的,理解了一种还有一种就能够迎刃而解,想要理解反射首先须要了解底层的一些概念和执行.理解了反射有助于 ...

  3. Java 反射机制[Method反射]

    Java 反射机制[Method反射] 接着上一篇Java 反射机制[Field反射],通过调用Person类的setName方法将obj的name字段的Value设置为"callPerso ...

  4. Java基础 -- 深入理解Java类型信息(Class对象)与反射机制

    一 RTTI概念 认识Claa对象之前,先来了解一个概念,RTTI(Run-Time Type Identification)运行时类型识别,对于这个词一直是 C++ 中的概念,至于Java中出现RT ...

  5. Java高级篇(四)——反射

    之前写到了设计模式的代理模式,因为下一篇动态代理等内容需要用到反射的知识,所以在之前Java篇的基础上再写一篇有关反射的内容,还是以实际的程序为主,了解反射是做什么的.应该怎么用. 一.什么是反射 反 ...

  6. XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)

    XML序列化   #region 序列化 /// <summary> /// XML序列化 /// </summary> /// <param name="ob ...

  7. Java之旅(2)—反射

    1.     概念 反射就是将java类中的各种成分映射成对应的java类.之前我们已经讲过了Class类,也明确了一个java类中用一个Class类的对象来表示,一个类中的组成部分有:成员变量,方法 ...

  8. 我对java的理解(二)——反射是小偷的万能钥匙

    在我们生活中,车上或者路上有时候会遇到一种很讨厌的人——“小偷”,趁我们不注意或者疏忽的时候拿走属于我们的东西.更有甚者,趁我们不在家的时候,手持一把万能钥匙,打开我们的房门,悠闲的查看房间的布置,翻 ...

  9. Java基础:(七)反射

    一.什么是反射 理解反射之前,先要搞懂一件事情,类加载到底是怎么一回事? 类加载相当于Class对象的加载.每个类都有一个Class对象,包含了与类有关的信息.当编译一个新类时,会产生一个同名的.cl ...

  10. java 反射和暴力反射 两个DEMO

    </pre><pre code_snippet_id="402084" snippet_file_name="blog_20140622_5_93502 ...

随机推荐

  1. Warning: Attempt to present on whose view is not in the window hierarchy!

    当我想从一个VC跳转到另一个VC的时候,一般会用 - (void)presentViewController:(UIViewController *)viewControllerToPresent a ...

  2. 使用ContentProvider访问其他应用的SharedPreferences数据

    @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs ...

  3. UITextFiled,UITextView长度限制

    长度限制用到的地方很多,但是需求都不一样.有的要求全部字符按一个处理,有的要求英文字母按一个,中文按两个,emoji按四个.这样就会遇到各种各样奇怪的问题,再被虐了无数次后,终于解决掉了.下面就来写写 ...

  4. 【C语言】C语言函数

    目录: 1. [函数注意点] 2. [函数目的] 3. [函数格式] 4. [函数定义前需明确的条件] 5. [函数的形参.实参] 6. [函数返回值注意点] 7. [为什么要return] 8. [ ...

  5. nodejs API

    1.querystring参数处理 序列化 > querystring.stringify({'name':'scott',course:['jade','node'],from:''}) 'n ...

  6. 1.7 基础知识——GP2.6 配置管理(CM)

    摘要: 某某工作产品要进行配置管理,并不意味非要进行很重型的配置管理,根据实际需要采取合适的方式就可以了. 正文: GP2.6 Place designed work products of XXX ...

  7. git技巧记录--blame

    git blame [-L<m,n>] FilePath 可以查看代码每一行是谁写的(根据该行最后一次改动情况), -L表示要查看的行数范围, m: 起始行数, n:结束行数. 方便快速定 ...

  8. 【转】JAVA 8 日期/时间(Date Time)API指南

    前言 本来想写下Java 8的日期/时间API,发现已经有篇不错的文章了,那就直接转载吧~ PS:主要内容没变,做了部分修改. 原文链接: journaldev 翻译: ImportNew.com - ...

  9. 持续集成 .Net手册--提升开发效率和质量

    参考:http://blog.csdn.net/chelsea/article/details/132525 持续集成 .Net手册 一.概念 Martin Fowler的文章:Continuous ...

  10. SQL Server 分隔字符串函数实现

    在SQL Server中有时候也会遇到字符串进行分隔的需求.平时工作中常常遇到这样的需求,例如:人员数据表和人员爱好数据表,一条人员记录可以多多人员爱好记录,而往往人员和人员爱好在界面展示层要一并提交 ...