前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java反射机制入门3

java反射机制入门3

作者头像
用户1737026
发布2018-05-17 17:35:09
4420
发布2018-05-17 17:35:09
举报
文章被收录于专栏:五毛程序员

Method对象的机制与实现

1、Method对象概述

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

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

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

方法名

释义

getName()

获得方法名称

getReturnType()

获得方法返回值类型

invoke(Object obj, Object ...args)

利用obj对象调用该方法

getParameterTypes()

获取方法所有参数类型,按照顺序返回class数组

getDeclaredAnnotations()

获取方法的全部注解

代码语言:javascript
复制
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方法 西游记

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-07-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档