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. 四轴飞行器1.2.2 RT-Thread 串口

    四轴飞行器1.2.2 RT-Thread 串口        本来是打算说根据RT-Thread的设备管理提供的驱动接口些串口驱动的,但是仔细一看,我去,串口驱动写好了,只需要调用就可以了.下面我们说 ...

  2. 《Orange'S:一个操作系统的实现》笔记(一)

    感觉自己对于操作系统始终没有一个清楚的概念,尤其最近困扰于实模式.保护模式以及寻址方式等一些概念.转而一想,所有的程序,最终都是操作的计算机资源,需要和操作系统打交道,所以操作系统有必要深入了解一下. ...

  3. 10个必备的移动UI设计资源站

    http://www.uisdc.com/10-necessary-mobile-ui-design-resources# 交互设计中如何增加趣味性.提升愉悦http://www.uisdc.com/ ...

  4. ubuntu12.04下 安装虚拟主机

    Ubuntu Linux 方法一 一.修改/etc/apache2/sites-available/ 1. 打开目录 /etc/apache2/sites-available/, 发现 default ...

  5. Android应用开发基础篇(2)-----Notification(状态栏通知)

    一.概述      Notification这个部件的功能是在状态栏里显示消息提醒,比如有未读的短信或者是未接的电话,那么状态栏里都会有显示,更或者是从某个应用(比如QQ,酷我音乐等等)里按Home键 ...

  6. 度小于所述过程:es.exe

    在防火墙管理,见未知的过程"es.exe" 程序信息: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGVzdGNzX2Ru/font ...

  7. EBS OAF 开发中的OAMessageRadioGroup控件

    EBS OAF 开发中的OAMessageRadioGroup控件 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 简单介绍 RadioGro ...

  8. CSS–Some Structure

    Some Structure About CSS Layout Position,Layer[层次] Box Model Visual Formatting Model BFC[block forma ...

  9. canvas绘制弹跳小球

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. ie6,ie7下设置overflow:auto下滚动条不起作用

    今天遇到一个比较特殊的情况:ie6,ie7下设置overflow:auto下滚动条出来了但是滚动条不起任何作用,但在火狐,ie8,ie9,谷歌等浏览器下正常显示,解决方案:只需要加一个position ...