每个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<Dept> 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 使用反射调用方法的更多相关文章

  1. java reflect反射调用方法invoke

    类定义 package Reflect; public class MyTest { public int a; public static int b; public static final in ...

  2. java通过反射调用不同参数的方法

    import java.lang.reflect.Method; public class testReflect { /** * @param args */ public static void ...

  3. JAVA反射调用方法

    1.用户类 package com.lf.entity; import com.lf.annotation.SetProperty; import com.lf.annotation.SetTable ...

  4. Java反射学习-4 - 反射调用方法

    反射调用方法: package cn.tx.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Method ...

  5. .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)——转载

    原文链接:https://blog.walterlv.com/post/dotnet-high-performance-reflection-suggestions.html ***** 大家都说反射 ...

  6. 原 .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)

    大家都说反射耗性能,但是到底有多耗性能,哪些反射方法更耗性能:这些问题却没有统一的描述. 本文将用数据说明反射各个方法和替代方法的性能差异,并提供一些反射代码的编写建议.为了解决反射的性能问题,你可以 ...

  7. java利用反射调用类的某个方法

    java利用反射机制 可以动态调用某个类的某个方法,在 扩展系统功能或提供对外接口时经常用的到. 代码如下: 打印类Print.java package com.test.reflct; /** * ...

  8. 通过Java反射调用方法

    这是个测试用的例子,通过反射调用对象的方法.     TestRef.java import java.lang.reflect.Method; import java.lang.reflect.In ...

  9. Java 反射调用方法 - 不跳过安全检查、跳过安全检查和普通方法性能比较测试

    java中反射提供灵活性同时,给运行效率带来了一定影响.写个代码测试一下 package com.xzlf.reflectTest; import java.lang.reflect.Method; ...

随机推荐

  1. windbg双机调试

    win10  测试,当出现下列情况 ,请使用管理员身份运行 设置添加系统环境变量_NT_SYMBOL_PATH 的值为:srv*c:\symbols*http://msdl.microsoft.com ...

  2. RapidMiner Studio 入门

    http://docs.rapidminer.com/studio/getting-started/ RapidMiner Studio 入门 FEIFEI MA 2015-12-07RAPIDMIN ...

  3. PyCharm 头文件设置及作用

    PyCharm 头文件 设置 进入File --->settings---->Editor---->File and Code Templates----->Python Sc ...

  4. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十一章:环境光遮蔽(AMBIENT OCCLUSION)

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十一章:环境光遮蔽(AMBIENT OCCLUSION) 学习目标 ...

  5. objectarx之模型空间

    AcDbObjectId CCommonFuntion::PostToModelSpace(AcDbEntity* pEnt){ // 获得指向块表的指针 AcDbBlockTable *pBlock ...

  6. 集合--List&&ArrayList-LinkedList

    1.8新特性  List接口中的replaceAll()方法,替换指定的元素,函数式接口编程 List  元素是有序的并且可以重复 四种add();方法 ArrayList(用于查询操作),底层是数组 ...

  7. sql —— between

    BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围. 原表: 执行查询: 上面就可以搜索出得分为80~90的学生了,包含80,也包含90.

  8. 简单线性回归(最小二乘法)python实现

      简单线性回归(最小二乘法)¶   0.引入依赖¶ In [7]: import numpy as np import matplotlib.pyplot as plt   1.导入数据¶ In [ ...

  9. poj1637&&hdu1956 混合欧拉回图判断

    欧拉路:经过所有路有且仅有1次,可以路过所有的点. 无向图:  图连通,所有点都是偶数度,或者只有两个点是奇数度.当所有点是偶数度时欧拉路起点可以是任意点:当有两个奇数度点时起点必须是奇数度点. 有向 ...

  10. Java转iOS-第一个项目总结(2):遇到问题和解决方案

    目录1.UITableView滑动卡顿的优化 2.右滑手势返回 3.添加页面统计 4.debug版和release版 5.关于页面刷新 6.关于页面布局 7.推荐博客 遇到问题和解决方案 本文是Jav ...