java 动态调用方法_Java动态调用方法
public void function(String str) {
//根据 str的值 调用相应的方法
}
public void test() {
//code
}
如str的值为test,就调用test方法。主要用到java反射机制,Class和Method这些类。
动态调用的方法:a.getClass().getMethod(str, new Class[]{}).invoke(a, new Object[]{})
其中,a为类的对象,str为要被调用的方法名
a.getClass()得到a.class对象
getMethod(str, new Class[]{})得到a对象中名为str的不带参数的方法。如果str方法带参数如str(String s, int i),就要这样写getMethod(str, new Class[]{String.class,int.class})
invoke(a,new Object[]{})调用方法,第一个参数是要调用这个方法的对象,如果方法是static的,这个参数可以为null。如果调用有参数的方法str(String s, int i),应该这样写invoke(a,new Object[]{"jimmy", 1})
下面是代码,帮助理解
public class MovingInvokeTest {
private static MovingInvokeTest movingInvokeTest = new MovingInvokeTest(); // 创建MovingInvokeTest对象
/*
* 根据str字符串调用方法,变量i只是为了判断,调用有几个参数的方法
*/
public void do_test(String str, int i) throws Exception {
if (i == 0) {
// 调用没有参数的方法
movingInvokeTest.getClass().getMethod(str, new Class[] {}).invoke(movingInvokeTest, new Object[] {});
} else if (i == 1) {
// 调用有一个参数的方法,参数为String类型的s
movingInvokeTest.getClass().getMethod(str, new Class[] { String.class }).invoke(movingInvokeTest, new Object[] { "s" });
} else if (i == 2) {
// 调用有两个参数的方法 参数分别为String类型的qw和int型的1
movingInvokeTest.getClass().getMethod(str, new Class[] { String.class, int.class }).invoke(movingInvokeTest, new Object[] { "qw", 1 });
}
}
public void speak() {
System.out.println("调用的没有参数的方法");
}
public void speak(String s) {
System.out.println("调用有一个参数的方法,参数为:" + s);
}
public void speak(String s, int i) {
System.out.println("调用有两个参数的方法,参数为,参数为:" + s + "和" + i);
}
public static void main(String[] args) throws Exception {
movingInvokeTest.do_test("speak", 1);
}
}
java 动态调用方法_Java动态调用方法相关推荐
- java 反射 set方法_java 反射调用set方法
Java语言中的许多库类名称,多与咖啡有关.下面是小编为您带来的java 反射调用set方法,希望对大家有所帮助. java 反射调用set方法: import java.beans.Property ...
- java如何用c 的方法_JAVA如何调用C/C++方法
JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能.解决JAVA对本地操作的一种方法就是JNI. JAVA通过JNI调用本地方法, ...
- java调用so库中的native方法_Java如何调用本地.so库里的方法
首先在此之前希望你已经掌握了基本JNI常识的运用,比如Java代码如何调用本地native的方法,native方法如何访问本地变量,本地方法等以及其他相关的基础知识.在此我还是贴上Activity的部 ...
- java 引用其他类_java如何调用其他类中的方法?
1.java如何调用其他类中的方法 java调用另一个类的方法: java类有两种方法一种是类方法就是用static修饰的,一种是实例方法,就是没有static修饰的方法.类方法可以同时类名,方法名的 ...
- java怎么调用另一个类的方法_java如何调用另一个类的方法
java调用另一个类的方法:1.类方法用static修饰,代码为[public static void sayStatic()]:2.没有static修饰的方法,代码为[ public void sa ...
- java 调用父级方法_java子类调用父类的方法是什么
java子类调用父类的方法:1.子类的对象调用方法时,会首先在子类中查找,如果子类中没有该方法,再到父类中查找:2.如果该方法中又调用了其他方法,那么还是按照之前的顺序,先在子类中查找,再在父类中查找 ...
- java怎么调用方法_Java怎么调用类方法
Java调用类方法的步骤:首先新建一个类,在调用类中先进行被调用类实例化:然后通过实例化的对象访问:最后新建一个类,将该类中需要被调用的方法设置为静态,加了static后,就可以用类名直接调用,格式为 ...
- c调用其他类的方法_Java 的 Native 方法——今天又进步了
1. 简介 1.1 个人理解 初次遇见 native 是在 java.lang.String 源码中的一个 intern 方法: public native String intern(); 因为还是 ...
- java native函数库_Java 层调用 Native 层函数的两种方式
概述 Java 层如何调用Native层函数,大家都应该知道使用JNI(Java 本地接口). 通过在java层声明native方法,然后遵守JNI规范命名Native函数,即可建立Java层nati ...
最新文章
- 深度学习的算法实践和演进
- python web-手把手教你写网站:Python WEB开发技术实战
- MATLAB 数值数组和字符串转换
- 2-Tenor AF AFT400-实战-Lync Server 2010-集成-2012-01-19
- vba校对统计不同工作薄(2)
- mysql修改服务器ip,mysql数据库修改服务器ip
- 2020年最新程序员职业发展路线指南,超详细!
- github速成手册
- PHP学习笔记五(命名空间)
- Cameralink转HDMI接口转换模块
- Android应用的persistent属性
- wallpaper代码_70 行 python 代码实现壁纸批量下载!
- ARM 编译工具keil 和 IAR 命令行编译和下载
- AppScan--图解web扫描工具IBM Security AppScan Standard
- QNX微内核RTOS
- 韦东山C语言加强07
- 两点计算机械手旋转中心
- 高精度阶乘和 高精度算法(c语言)
- android studio 与eclipse创建命名空间时候的区别
- 上市企业高管背景研究——男、女性高管数据
热门文章
- python做数据可视化视频_如何制作数据可视化视频?
- 题库管理|考试管理|基于Web的大学生题库管理系统的设计与实现
- 会python再学java要多久_【学过python多久能学会java】廖雪峰python教程要学多久
- windows2003系统下phpstudy网站搭建
- c语言结构体一年的第几天是排卵期,C语言 求一个日期是这一年的第几天
- 全国计算机报告考点,全国计算机等级考试二级Access考点分析之报表(5)
- 1012 - 曼哈顿距离切比雪夫距离
- linux图形界面切换账户,linux图形界面和字符界面相互转换
- java的输入输出格式
- linux7防火墙拒绝ip访问,FirewallD防火墙常用经验——开放端口——拒绝某个IP访问...