前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA反射系列之Method,java.lang.reflect.Method的使用

JAVA反射系列之Method,java.lang.reflect.Method的使用

作者头像
allsmallpig
发布2021-02-25 10:29:20
5540
发布2021-02-25 10:29:20
举报
文章被收录于专栏:allsmallpi博客

摘要: ava.lang.reflect.Method的基本使用。 

最近写项目,用反射的比较多,写一个总结,以便查阅。

  Method是反射最基本的一个类。

  直接上代码:

[java] view plain copy

  1. /**
  2.  * @ClassName: Test
  3.  * @Description: 测试类
  4.  * @author JoseanLuo  
  5.  * @date 2014-3-16 下午8:47:46
  6.  * @version V1.0 
  7.  */
  8. public class Test {  
  9. public String doRun(String pk,Student stu,String testrun)  
  10.    {  
  11. return pk+stu+testrun;  
  12.    }  
  13. }  

 测试

[java] view plain copy

  1. import java.lang.reflect.Method;  
  2. /**
  3.  * @ClassName: ReflectMethodTest
  4.  * @Description: 反射方法测试
  5.  * @author JoseanLuo  
  6.  * @date 2014-3-18 下午8:53:51
  7.  * @version V1.0 
  8.  */
  9. public class ReflectMethodTest  
  10. {  
  11. public static void main(String[] args) throws Exception  
  12. {  
  13. Class clz=Class.forName("com.cx.test.Test");  
  14. System.out.println(clz);  
  15. Test test=(Test) clz.newInstance();  
  16. Method mt=clz.getMethod("doRun", new Class[]{String.class,Student.class,String.class});  
  17. System.out.println(mt);  
  18. System.out.println(mt.invoke(test, new Object[]{"i love you ",null,"i fuck you",}));  
  19. }  
  20. }  

忘记加student类了,看我别一篇文章吧。

想要调用一个类的方法。

首先要获得这个类Class 

这里用的

[java] view plain copy

  1. Class.forName("com.cx.test.Test");  

取得clz,

然后利用clz.

[java] view plain copy

  1. clz.getMethod("doRun", new Class[]{String.class,Student.class,String.class});  

取得Method对象

这里后一个可以不传,此时调用的是名字的无参方法。如

[java] view plain copy

  1. clz.getMethod("doRun");  

调用的是doRun()方法。

如果你要想获取的方法和你传的参数类型,个数不同就会出错(排除重载)

得到了你相要的方法对象之后。

你就能直接调用他了

[java] view plain copy

  1. mt.invoke(test, new Object[]{"i love you ",null,"i fuck you",})  

注意:方法参数顺序,按方法接收参数顺序。

赶紧试一下吧。 想要更加高级的功能,多看API,哈,欢迎大家一起探讨。

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

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

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

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

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