反射输出helloworld
来源:互联网 发布:淘宝可以改实名认证吗 编辑:程序博客网 时间:2024/06/01 08:17
package test;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class MethodTest { public static void main(String[] args) { try { MethodTest tm = new MethodTest(); Method m = tm.getClass().getMethod("say",new Class[]{String.class,int.class}); m.invoke(tm, new Object[]{"hello world",5}); } catch (NoSuchMethodException | SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public String say(String s,int m){ System.out.println((s+m).substring(0,11)); return s; }}
简单看一下源码:
Class getMethod()
先确认是否有方法的访问权限,然后调用getMethod0()方法
这个查找的逻辑不复杂,先在本类中查,根据方法的描述符,包括方法名,方法的参数,方法是否有返回值和返回类型。本类中没有就在类的父类中查,父类中也没有就在类实现的接口中查,都没有就返回null。
然后调用method的invoke方法执行方法区的字节码。
0 0
- 反射输出helloworld
- VB 控制台输出"HelloWorld!"
- 如何输出HelloWorld!
- 汇编输出HelloWorld
- 循环输出helloworld
- Q1:控制台输出helloworld
- 练习:循环输出HelloWorld
- js循环输出helloworld
- vue.js 输出helloworld!
- 汇编语言-输出HelloWorld
- 输出Helloworld 没有main方法
- shell编程基础 输出helloworld
- 1.Spring4.0---输出HelloWorld
- spring入门(控制台输出helloworld)
- struts2入门—输出helloworld
- java优雅的输出helloWorld
- 反射输出属性值
- 输出helloworld的几种版本
- 设计模式-创建型模式:原型模式PrototypeModel
- js获取当前时间前一周时间前一个月时间
- RecyclerView实用-打造自动循环的RecyclView
- Android自定义View的实现方法,带你一步步深入了解View(四)
- java dwr配置
- 反射输出helloworld
- chromedriver与GOOGLE浏览器对应版本
- Gradle多渠道打包以及混淆配置总结
- Spring框架打印机实例
- 用委托实现插件式编程
- 找出member表中,username字段 中以@p结尾的用户名的项
- 47. Permutations II
- 我的错误
- Android ConstraintLayout