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. 修改IIS虚拟目录名称

    @echo off echo ------------------------------------------------------------------------------ echo - ...

  2. ETL工具之ODI

    ETL工具之ODI         到目前为止,Oracle的ETL工具包括两种,分别是Oracle Warehouse Builder(OWB)和Oracle Data Integrator(ODI ...

  3. SSD的来由与优势

           SSD,对于很多人来说,它现在已不再是个很陌生的名词,有些网友谐趣的把它称作“湿湿的”,这里既有谐音的意味,也有称赞SSD意思.虽然大家对SSD已不算陌生,但恐怕对SSD的历史也所知不多 ...

  4. QT小记之在VS2005中使用(设置QMAKESPEC环境变量,以及编译QT Lib)

    QT的结构很清晰明了,看过第一个HELLO WORLD便爱上了它,感觉CEGUI有借鉴过QT的设计.如何在Windows平台下使用QT开发?一,下载SDK包请去官网(QT被NOKIA收购,貌似使用协议 ...

  5. PE头的应用---插入代码到EXE或DLL文件中

    三.代码实现(DELPHI版本),采用第三种方式实现代码插入. 1. 定义两个类,一个用来实现在内存中建立输入表:一个用来实现对PE头的代码插入. DelphiCode: const MAX_SECT ...

  6. 脑波设备mindwave二次开发框架

    神念科技提供的mindwave提供了脑波耳机和相应的游戏,这些游戏你可以通过购买神念科技的mindwave耳机来获取,这里不多作介绍. 我们作为程序员,如果有了相应的创意,也可以通过他们提供的二次开发 ...

  7. Identity Card(水题)

    Identity Card Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  8. paip. everything exe 文件不能启动的解决

    paip.   everything  exe  文件不能启动的解决 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blo ...

  9. 项目管理:关于SVN的实践

    SVN是Subversion的简称,是一个开放源码的版本号控制系统. 合作开发的时候,对SVN的使用有3个软件:SVN的server端,SVNclient(也就是Tortoise SVN,寻常chec ...

  10. Shell 脚本小试牛刀(番外) -- 捷报

    捷报 捷报 捷报 捷报 捷报 捷报来袭,本系列的脚本已在Github 上开了版块, 我命名为" easy shell "(点此进入). 眼下已加入前面几期中的脚本,日后还会有很多其 ...