java invoke 方法说明_java中的反射,invoke方法
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方法相关推荐
- java 获取当前年_java中的反射(三) - kelexin
目录一.反射1.class类2.访问字段3.调用方法4.调用构造方法5.获取继承对象6.动态代理二.sping中的反射 本篇转自:本篇内容spring中的反射 java中的反射(一): java中的反 ...
- Java构造函数的使用_java中构造函数的使用方法
java中构造函数的使用方法 发布时间:2020-06-26 18:08:07 来源:亿速云 阅读:113 作者:Leah 本篇文章为大家展示了java中构造函数的使用方法,代码简明扼要并且容易理解, ...
- java sendredirect报错_java 中sendredirect()和forward()方法的区别
HttpServletResponse.sendRedirect与RequestDispatcher.forward方法都可以实现获取相应URL资源. sendRedirect实现请求重定向,forw ...
- java int位运算_java中int的表示方法,位运算的解析
随着时代的不断发展,越来越多的人开始投入到java的学习当中来.今天就来为大家介绍java中int的表示方法以及位运算的内容有哪些一起来看看吧. 首先我们需要知道的是,在java中,int是使用32位 ...
- java 怎么创建窗体_java中创建窗体的方法
java中创建窗体的方法 发布时间:2020-06-16 11:26:04 来源:亿速云 阅读:102 作者:Leah 这篇文章给大家分享的是有关java中创建窗体的方法,小编觉得挺实用的,因此分享给 ...
- java 删除文件失败_java中File的delete()方法删除文件失败的原因
一般来说 java file.delete失败 有以下几个原因 1.看看是否被别的进程引用,手工删除试试(删除不了就是被别的进程占用) 2.file是文件夹 并且不为空,有别的文件夹或文件, 3.极有 ...
- java 获取sqlsession_获取Java的MyBatis框架项目中的SqlSession的方法
从XML中构建SqlSessionFactory从XML文件中构建SqlSessionFactory的实例非常简单.这里建议你使用类路径下的资源文件来配置. String resource = &qu ...
- Java EasyExcel在Web网站中读写Excel的方法及示例代码
使用EasyExcel可以更容易简单在Web网站中读写Excel,本文主要介绍在Java Web网站中读写Excel方法及示例代码. 原文地址:Java EasyExcel在Web网站中读写Excel ...
- 一个java程序中什么是主类_下列哪个是Java应用程序主类中正确的main方法?_学小易找答案...
[判断题]用佛尔哈德法测定Ag + 时,不用先除去氮的低价氧化物.汞盐等杂质. [单选题]下列哪个是Java应用程序主类中正确的main方法? [判断题]javac.exe 命令文件存放在 JDK 安 ...
最新文章
- 本地打包Docker镜像上传至阿里云远程仓库(一站式脚本)
- LeetCode简单题之最小操作次数使数组元素相等
- 网络IO模型的深入浅出
- “因人脸识别错误,我被捕了!”
- BCI competition IV 2b简介
- SFB 项目经验-30-SFB与SFB联盟-IM-正常-状态-不正常
- unity读取Json文件
- YDUI Touch InfiniteScroll无限加载数据测试
- 爬取人民邮电出版社书籍信息
- 腾讯云游戏数据库 TcaplusDB 的一些常见问题的解答
- 立创EDA极速入门(1)——熟悉PCB和立创EDA基本操作
- 解决opencv imwrite()影像全黑
- 大数据处理系统都有哪些?(批处理系统与迭代计算系统)
- 图书馆管理系统代码html语言,html图书管理系统
- 传奇3服务器数据修改,传奇3游戏架设技术之3.0服务器架设和设置攻略详细分享...
- 华为AI计算机,华为在人工智能行业的发展
- PostgreSQL 操作
- 阿里云服务器活动中的计算型c5、c6、c6a、c6e有什么区别?如何选择?
- 4-2 简单实现x的n次方 (10分)
- 电子劳动合同,为企业用工护航