invoke,就是通过函数名反射调用相应的函数。以下代码简单地介绍了java反射中invoke方法

package org.curry.tool;

import java.lang.reflect.Method;

public class InvokeMethods {

public static void main(String[] args) {

Employee emp = new Employee();

Class cl = emp.getClass();//是Class,而不是class

// getClass获得emp对象所属的类型的对象,Class就是描述类的类

// Class是专门用来描述类的类,比如描述某个类有那些字段,方法,构造器等等!

try {

// getMethod方法第一个参数指定一个需要调用的方法名称,这里是Employee类的setAge方法,

// 第二个参数是需要调用方法的参数类型列表,是参数类型!如无参数可以指定null或者省略

// 该方法返回一个方法对象

//参数必须和方法中一样,int和Integer,double和Double被视为不同的类型

Method sAge = cl.getMethod("setAge", new Class[] { int.class });

Method gAge = cl.getMethod("getAge", null);

Method pName = cl.getMethod("printName", new Class[] { String.class });

Object[] args1 = { new Integer(25) };

// invoke方法中,第二个参数为参数列表,该参数列表是一个object[]数组

// emp为隐式参数该方法不是静态方法必须指定

sAge.invoke(emp, args1);//通过setter方法赋值

Integer AGE = (Integer) gAge.invoke(emp, null);//通过getter方法返回值

int age = AGE.intValue();//Integer转换成int

System.out.println("The Employee Age is: " + age);

Object[] args3 = { new String("Jack") };

pName.invoke(emp, args3);

} catch (Exception e) {

e.printStackTrace();

}

System.exit(0);

}

}

class Employee {

// 定义一个员工类

public Employee() {

age = 0;

name = null;

}

// 将要被调用的方法

public void setAge(int a) {

age = a;

}

// 将要被调用的方法

public int getAge() {

return age;

}

// 将要被调用的方法

public void printName(String n) {

name = n;

System.out.println("The Employee Name is: " + name);

}

private int age;

private String name;

}

项目代码:

/**

*利用keyName来对以search作为查询条件的结果集进行过滤

/

public Map getMap(Search search,String keyName){

List entities=this.getBaseDao().search(search, DaoParam.SEARCH_OPTION_NORMAL);

Map map=new LinkedHashMap();

//通过参数keyName获得get方法名,比如getName,getAge

String methodName="get"+keyName.substring(0,1).toUpperCase()+keyName.substring(1);

for(T entity:entities){

Object key=null;

try {

//getter方法不需要参数

Method method=entity.getClass().getMethod(methodName);

//反射调用方法

key=method.invoke(entity);

if(key instanceof BasePojo){

//如果getter方法返回的是BasePojo类,那么以该BasePojo的id作为key

key=((BasePojo>)key).getId();

}

map.put(key, entity);

} catch (Exception e) {

logger.error(e,e);

}

}

entities=null;

return map;

}

java invoke 方法说明_java中的反射,invoke方法相关推荐

  1. java 获取当前年_java中的反射(三) - kelexin

    目录一.反射1.class类2.访问字段3.调用方法4.调用构造方法5.获取继承对象6.动态代理二.sping中的反射 本篇转自:本篇内容spring中的反射 java中的反射(一): java中的反 ...

  2. Java构造函数的使用_java中构造函数的使用方法

    java中构造函数的使用方法 发布时间:2020-06-26 18:08:07 来源:亿速云 阅读:113 作者:Leah 本篇文章为大家展示了java中构造函数的使用方法,代码简明扼要并且容易理解, ...

  3. java sendredirect报错_java 中sendredirect()和forward()方法的区别

    HttpServletResponse.sendRedirect与RequestDispatcher.forward方法都可以实现获取相应URL资源. sendRedirect实现请求重定向,forw ...

  4. java int位运算_java中int的表示方法,位运算的解析

    随着时代的不断发展,越来越多的人开始投入到java的学习当中来.今天就来为大家介绍java中int的表示方法以及位运算的内容有哪些一起来看看吧. 首先我们需要知道的是,在java中,int是使用32位 ...

  5. java 怎么创建窗体_java中创建窗体的方法

    java中创建窗体的方法 发布时间:2020-06-16 11:26:04 来源:亿速云 阅读:102 作者:Leah 这篇文章给大家分享的是有关java中创建窗体的方法,小编觉得挺实用的,因此分享给 ...

  6. java 删除文件失败_java中File的delete()方法删除文件失败的原因

    一般来说 java file.delete失败 有以下几个原因 1.看看是否被别的进程引用,手工删除试试(删除不了就是被别的进程占用) 2.file是文件夹 并且不为空,有别的文件夹或文件, 3.极有 ...

  7. java 获取sqlsession_获取Java的MyBatis框架项目中的SqlSession的方法

    从XML中构建SqlSessionFactory从XML文件中构建SqlSessionFactory的实例非常简单.这里建议你使用类路径下的资源文件来配置. String resource = &qu ...

  8. Java EasyExcel在Web网站中读写Excel的方法及示例代码

    使用EasyExcel可以更容易简单在Web网站中读写Excel,本文主要介绍在Java Web网站中读写Excel方法及示例代码. 原文地址:Java EasyExcel在Web网站中读写Excel ...

  9. 一个java程序中什么是主类_下列哪个是Java应用程序主类中正确的main方法?_学小易找答案...

    [判断题]用佛尔哈德法测定Ag + 时,不用先除去氮的低价氧化物.汞盐等杂质. [单选题]下列哪个是Java应用程序主类中正确的main方法? [判断题]javac.exe 命令文件存放在 JDK 安 ...

最新文章

  1. 本地打包Docker镜像上传至阿里云远程仓库(一站式脚本)
  2. LeetCode简单题之最小操作次数使数组元素相等
  3. 网络IO模型的深入浅出
  4. “因人脸识别错误,我被捕了!”
  5. BCI competition IV 2b简介
  6. SFB 项目经验-30-SFB与SFB联盟-IM-正常-状态-不正常
  7. unity读取Json文件
  8. YDUI Touch InfiniteScroll无限加载数据测试
  9. 爬取人民邮电出版社书籍信息
  10. 腾讯云游戏数据库 TcaplusDB 的一些常见问题的解答
  11. 立创EDA极速入门(1)——熟悉PCB和立创EDA基本操作
  12. 解决opencv imwrite()影像全黑
  13. 大数据处理系统都有哪些?(批处理系统与迭代计算系统)
  14. 图书馆管理系统代码html语言,html图书管理系统
  15. 传奇3服务器数据修改,传奇3游戏架设技术之3.0服务器架设和设置攻略详细分享...
  16. 华为AI计算机,华为在人工智能行业的发展
  17. PostgreSQL 操作
  18. 阿里云服务器活动中的计算型c5、c6、c6a、c6e有什么区别?如何选择?
  19. 4-2 简单实现x的n次方 (10分)
  20. 电子劳动合同,为企业用工护航

热门文章

  1. 番茄(西红柿)叶病害数据集
  2. 真正厉害的人都是不动声色的
  3. 面经 - 小红书 数据分析师
  4. 代词总结——day2
  5. ES(ElasticSearch)和solr的比较
  6. left和margin-left的区别
  7. postfix+squirrelmail实现邮件服务器
  8. 【Java版高级数据结构】树论基础二叉树
  9. 【动态规划-困难】354. 俄罗斯套娃信封问题
  10. 这么好的资源不能浪费了啊