尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

利用java反射根据方法名称字符串调用方法

利用java反射根据方法名称字符串调用方法
📅 发布时间:2026/6/22 2:30:04

利用java反射根据方法名称字符串调用方法

前提:

由对象获取一个.class对象:

Class clazz = "hello world".getClass();

由对象的全包名获取一个.class对象:

Class clazz=Class.forName("java.lang.String");
学习的时候发现,int等基本数据类型不是对象,所以无法获得其class对象,使用过程中只能通过int.class获取

正文:

实体类

package test;

public class Student {
private static Student student = new Student();
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void method1(int param1,String param2) {
System.out.println(param1+param2);
}

}

测试类:

package test;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Test {

public static void main(String[] args) throws Exception {Student stu = new Student();stu.setAge(1);stu.setName("lin");//1.无参Method method = stu.getClass().getMethod("getName");String name = (String) method.invoke(stu);//2.一参Method method2 = stu.getClass().getMethod("setName",Class.forName("java.lang.String"));method2.invoke(stu, "meng");//3.多参Method method3 = stu.getClass().getMethod("method1",int.class,Class.forName("java.lang.String"));//后两个参数获得的都是class对象method3.invoke(stu,15, "zhang");
}

}

另附自写get和set函数:

//参数列表:
//1.目标所属对象 2.所用set函数名(全称不加()) 3.set值
public void set(Info info,String fun,Object value) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, ClassNotFoundException {
Method method = info.getClass().getMethod(fun,Class.forName(value.getClass().getCanonicalName()));
method.invoke(info, value);
}

public Object get(Info info,String fun) throws Exception {
Method method = info.getClass().getMethod(fun);
return method.invoke(info);
}
使用过程中可自行将函数封装进模板类代替Info类

由于Object无法接收int等基本数据类型,故在实体类中时可将类型声明为Integer

public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public class Util {

public static<T> void set(T bean,String fun,Object value) throws Exception {Method method = bean.getClass().getMethod(fun,Class.forName(value.getClass().getCanonicalName()));method.invoke(bean, value);
}public static<T> Object get(T bean,String fun) throws Exception {Method method = bean.getClass().getMethod(fun);return method.invoke(bean);
}

}
public static void main(String[] args) throws Exception {
ABean aBean = new ABean();
Util.set(aBean,"setName","zhangsan");
System.out.println(aBean.getName());
}

相关新闻

  • java工程导入问题
  • 2025年无人机集群供应商推荐:多任务协同筑牢智能防务阵线 - 品牌2025
  • Xhorse VVDI MLB Tool + Solder-Free Adapter Kit: Add Keys for MLB Models

最新新闻

  • TableSeq:基于图像到序列的端到端表格识别框架实战
  • 自归约算法与聚类优化:破解大规模位置匹配性能瓶颈
  • 大语言模型如何通过分层推理与技巧识别辅助数学定理证明
  • 你的Android设备真的安全吗?让Google官方API告诉你真相
  • AI工作流工程化:4GB显存Windows部署可观察、可回滚的LLM系统
  • CI/CD 流水线自动化与 GitOps 实践:让部署从手工活变成流水线

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号