每个Method的对象对应一个具体的底层方法。获得Method对象后,程序可以使用Method里面的invoke方法来执行该底层方法。

Object invoke(Object obj,Object ... args):obj表示调用底层方法的对象,后面的args表示传递的实际参数。

如果底层方法是静态的,那么可以忽略指定的 obj 参数。该参数可以为 null,想想为什么?

如果底层方法所需的形参个数为 0,则所提供的 args 数组长度可以为 0 或 null。

不写,null,或 new Object[]{}

若底层方法返回的是数组类型,invoke方法返回的不是底层方法的值,而是底层方法的返回类型;

package junereflect624;

import java.lang.reflect.Method;

class Dept{

public String show(String name){//用反射的方法来调用正常的方法

return name+",您好!";

}

private void privateshow(){//用反射来实现对私有化方法的调用

System.out.println("privateshow");

}

public static void staticshow(){

System.out.println("staticshow");

}

}

public class InvokeDemo9 {

public static void main(String[] args) throws Exception {

/*  传统方式:

String name = new Dept().show("刘昭");

System.out.println(name);*/

/**

* Method getMethod(String name, Class>... parameterTypes)

返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。

name-方法名

parameterTypes-参数列表

*/

//想要通过反射来调用Dept中的方法

Class c = Dept.class;

Method m = c.getMethod("show", String.class);

Object o = m.invoke(c.newInstance(), "刘昭");

System.out.println(o);

//私有化的方法

m = c.getDeclaredMethod("privateshow");//无参方法

m.setAccessible(true);

o = m.invoke(c.newInstance());

//静态方法的调用

m = c.getMethod("staticshow");

m.invoke(null);//staticshow为静态方法,不需创建对象,所以这里会是null

}

}

打印

刘昭,您好!

privateshow

staticshow

反射java调用方法_java 使用反射调用方法相关推荐

  1. java 反射调用方法_java的反射机制,以及通过反射获取方法,变量等操作

    我们应用会用到反射这个知识点,肯定是想要在运行时得到类的信息,根据类的那些信息去做一些特定的操作.那么,首先无疑就是得到类的信息,在JDK中提供了Class对象来保存类的信息.所以,反射的第一步就是得 ...

  2. java 反射 对象的方法_java通过反射创建对象并调用方法

    这篇文章主要介绍了java通过反射创建对象并调用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.用户类 package com.lf.ent ...

  3. java 反射 找不到方法_Java获取反射的三种方法

    class Student { private int id; String name; protected boolean sex ; pub1ic f1oat score; } pub1ic cl ...

  4. java 反射创建对象并赋值_java使用反射创建并操作对象的方法

    Class 对象可以获得该类里的方法(由 Method 对象表示).构造器(由 Constructor 对象表示).成员变量(由 Field 对象表示),这三个类都位于 java.lang.refle ...

  5. java tostring方法_Java虚拟机如执行方法调用的(二)?

    虚方法调用 Java里所有非私有实例方法调用都会被编译成invokevirtual指令. 接口方法调用都会被编译成invokeinterface指令.这两种指令都属于Java虚方法的调用. 在大多数情 ...

  6. java 超类调用子类_java – 从超类调用子类方法

    我在介绍java课程,我们刚刚开始学习继承.我正在开展一项任务,要求我们创建一个名称和年龄的"宠物"超类;和三个子类,每个都有自己独特的特质(我选择了"狗",& ...

  7. java 获取类方法_Java之反射机制三:获取类的方法

    一.实体类BigDog.java package reflex; public class BigDog extends Dog { private Integer age; public Strin ...

  8. java 反射获取修饰符_java之反射和BeanUtils类

    反射和BeanUtils类 1. 类的初始化:类什么什么情况下会加载到内存中 只要类加载到内存中,那么类加载器就会为这个类创建一个class文件对象 2. javaBean:数据库中的表和java中的 ...

  9. java反射机制是什么_java的反射机制是什么?

    展开全部 Java 的反射机制是使其具有动态特性的32313133353236313431303231363533e4b893e5b19e31333231633263非常关键的一种机制,也是在Java ...

最新文章

  1. HTTP缓存——304与200 from cache
  2. 您需要了解的几个XHTML标签
  3. boost::iostreams::filtering_ostream用法的测试程序
  4. Javascript图像处理之将彩色图转换成灰度图
  5. lunix 安装python3
  6. ES6——generator与yield
  7. ArcGIS里表示地理信息的动态变化(例三)
  8. Dubbo框架应用之(三)--Zookeeper注冊中心、管理控制台的安装及解说
  9. A little knowledge point every day,一起学python
  10. 使用xml配置文件实现HSF框架和EDAS注册服务器的发布-订阅模式
  11. 泰坦尼克号幸存者的预测
  12. 展讯sprd_battery.c 充电驱动
  13. 【每日训练】排序子序列
  14. 2020年Top 100开发者工具列表汇总
  15. 顺丰速运——深圳大数据部一面(18分钟)
  16. 创业计划书PPT模板
  17. 人死了后还有来生吗?
  18. Altium Designer 20使用技巧
  19. 377. 组合总和 Ⅳ
  20. 大数据期末课程设计实验案例:网站用户行为分析

热门文章

  1. Qt 设置 QWidget 背景色
  2. 在解析完Excel表格之后,将每一行数据入库操作时,加入进度条,提示进度展示
  3. shader水面起伏的波浪
  4. mysql常见sql语句练习 sql练习题
  5. 对数据增删改查的Sql语句
  6. 为某个软件分配管理员权限
  7. IDEA翻译插件Translation的安装,百度翻译的应用ID和秘钥申请详细步骤
  8. Linux:安全审计功能的实现——audit详解
  9. opporeno6如何开启快门声音 一键设置启用快门声音方法分享
  10. 计算机一级英文缩写,下列英文缩写和中文名字的对照中,错误的是