Method对象的机制与实现

1、Method对象概述

1)java.lang.reflect.Method类是用于表示类中、接口中方法对象的类。

2)可以操作类中私有,以及公有等全部方法。

2、Method对象的常用方法介绍

方法名 释义
getName() 获得方法名称
getReturnType() 获得方法返回值类型
invoke(Object obj, Object ...args) 利用obj对象调用该方法
getParameterTypes() 获取方法所有参数类型,按照顺序返回class数组
getDeclaredAnnotations() 获取方法的全部注解
package com.rainmer.main;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier; import com.rainmer.bean.Book; public class MethodTest {
//该方法用于获取对象的所有方法名称、返回值类型、以及参数信息
public void show(Object ob){
Class cl = ob.getClass();
Method[] me= cl.getDeclaredMethods();
for (Method mm : me) {
System.out.println("方法名称:"+mm.getName());
System.out.println("方法修饰符:"+Modifier.toString(mm.getModifiers()));
System.out.println("方法返回值类型:"+mm.getReturnType());
Class[] preType = mm.getParameterTypes();
System.out.println("方法参数列表:");
for(Class cll : preType){
System.out.println(cll.getName()); }
}
} //该方法用于使用传递过来的实体对象,获取其中的方法,饼调用
public void showUse(Object ob){
Class cl = ob.getClass();
try {
Method me = cl.getMethod("getName", null);
me.invoke(ob, new Object[0]);//invoke援引,参数是长度为0的Object数组 Method me1 = cl.getMethod("setName", String.class);
me1.invoke(ob, "西游记");//ob对象调用了me1方法 Class[] cll = {String.class, int.class};
Method me2 = cl.getMethod("test", cll);
Object[] obb = {"哈哈哈", 12};
me2.invoke(ob, obb);
} catch (Exception e) {
e.printStackTrace();
} }
public static void main(String[] args) {
Book bo = new Book();
bo.setId(1);
bo.setName("我和凤姐同居的日子");
bo.setType("惊悚"); MethodTest test = new MethodTest();
test.showUse(bo);
System.out.println(bo.getName());
}
}

运行结果:

调用了setName方法
调用了getName方法
调用了setName方法
调用了多参数的方法
调用了getName方法
西游记

java反射机制入门3的更多相关文章

  1. java反射机制入门01

    java反射机制入门是我从极客学院的视频中学习的. 1.反射机制背景概述 反射(Reflection)是java被视为动态(或准动态)语言的一个关键性质.反射机制指的是程序在运行时能够获取任何类的内部 ...

  2. java反射机制入门04

    需要jxl.jar package com.rainmer.main; import java.io.File; import java.io.IOException; import java.uti ...

  3. java反射机制入门02

    Field对象的机制与实现 1.Field对象概述 1)Java.lang.reflect.Field类,是用于表示类中.接口中属性对象的类. 2)可以操作类中私有,以及公有等全部属性和属性的信息. ...

  4. 大白话说Java反射:入门、使用、原理

    文章首发于[博客园-陈树义],点击跳转到原文<大白话说Java反射:入门.进阶.原理> 反射之中包含了一个「反」字,所以想要解释反射就必须先从「正」开始解释. 一般情况下,我们使用某个类时 ...

  5. JAVA反射机制及理解

    JAVA反射 往往当我们面对一项新的知识时,我们往往需要知道三个方面,它是什么,它能做什么,它比原有知识强在哪里,我们该怎么使用它.当你能够解决这些问题时,便意味着你已经对这项知识入门了. 首先: 反 ...

  6. Java反射机制的浅显理解(这篇文章还没写好,留个草稿给自己看的)

    目前只是有一个大概的理解,先把自己感觉容易立即的概念放这里,等以后结合实际工作理解深刻了再来补充. 一.什么是Java反射机制?(多种定义) 1. JAVA反射机制是在运行状态中,对于任意一个类,都能 ...

  7. Java反射-初步入门

    Java反射-初步入门 学反射先了解什么是反射. 百度百科:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动 ...

  8. 大白话说Java反射:入门、使用、原理 (转)

    文章首发于[博客园-陈树义],点击跳转到原文<大白话说Java反射:入门.进阶.原理> 目录 一个简单的例子 反射常用API 获取反射中的Class对象 通过反射创建类对象 通过反射获取类 ...

  9. 第28章 java反射机制

    java反射机制 1.类加载机制 1.1.jvm和类 运行Java程序:java 带有main方法的类名 之后java会启动jvm,并加载字节码(字节码就是一个类在内存空间的状态) 当调用java命令 ...

随机推荐

  1. IBM HeapAnalyzer

    https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/W3b463571efc8_4f02_99af_3cbc0 ...

  2. php执行shell更新svn文件的方法

    vim /etc/sudoers 修改内容如下: #Defaults !visiblepw Defaults visiblepw #Defaults requiretty <?php set_t ...

  3. JSP打印九九乘法表

    ##index.jsp: <%@ page language="java" import="java.util.*" pageEncoding=" ...

  4. speex 回声消除的用法

    speex 回声消除的用法 分类: speex AEC 回声消除 2012-11-13 11:24 1336人阅读 评论(0) 收藏 举报 speex的回声消息 就是speex_echo_cancel ...

  5. 使用vi编辑binary文件

    原理:使用xxd将当前文件转成hex格式,编辑,然后再转回去 /usr/bin/xxd xxd - make a hexdump or do the reverse 例子: 用binary模式启动vi ...

  6. ios7高级

    1.实现控制器和视图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1     ...

  7. 仿36氪(iOS版附源代码)

    前言: 这是我2016年3月开始写的,利用课余时间全心投入的项目,本以为是凭着轻松愉悦的方式来学习的,中途遇到bug解决bug的时候,每天晚上几乎都是写到寝室关灯,还有一次使用Github不当写了五天 ...

  8. 转帖Jmeter中的几个重要测试指标释义

    Aggregate Report 是 JMeter 常用的一个 Listener,中文被翻译为“聚合报告”.今天再次有同行问到这个报告中的各项数据表示什么意思,顺便在这里公布一下,以备大家查阅. 如果 ...

  9. Android应用开发基础篇(15)-----URL(获取指定网址里的图片)

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/10/2389190.html 一.概述 URL,说白了就是一个网络地址(网址),通常一个网址里包 ...

  10. CDH集群频繁告警(host频繁swapping)

    最近CDH集群频繁告警,原因是某些host频繁swapping,极大影响了集群的性能. 后来发现有个设置(/proc/sys/vm/swappiness)需要修改,默认值60 Setting the ...