如何根据传入的类名和方法名,来调用对应的方法?

Bowner 2005-11-22 04:44:19
我想实现这样一个方法:
void test(String className, String methodName){
//
}
例如test("class1","method1")则表示调用class1.method1()方法。
该如何做? thx
...全文
477 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
skycncomp 2005-11-22
  • 打赏
  • 举报
回复
哎,白发了。

都结贴了。

我的分啊。555555555555
skycncomp 2005-11-22
  • 打赏
  • 举报
回复
以前写的一个程序,你看一下,不知道有没有用

package base;

import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Field;

public class ReflectBase {

public static void main(String[] args) throws Exception {
String name = "base.A";
A a = (A)Class.forName(name).newInstance();
a.setI(100);
a.setStr("新值");

getFieldsValue(a);
}

public static void getFieldsValue(Object o) throws Exception {
Field[] f = o.getClass().getDeclaredFields();
AccessibleObject.setAccessible(f, true);

for (int i = 0; i < f.length; i++) {
Field field = f[i];
Object obj = field.get(o);
System.out.println(obj);
}
}
}

class A {
private int i = 10;
private String str = "null";

public int getI() {
return i;
}

public void setI(int i) {
this.i = i;
}

public String getStr() {
return str;
}

public void setStr(String str) {
this.str = str;
}
}
Bowner 2005-11-22
  • 打赏
  • 举报
回复
谢谢各位。:)
nighthawk 2005-11-22
  • 打赏
  • 举报
回复
同意 jFresH_MaN(十一月的萧邦-夜曲) 。
类反射机制。
jFresH_MaN 2005-11-22
  • 打赏
  • 举报
回复 1
Class clazz=class.forName(className);
Object instance=clazz.newInstance();//调用没有参数的构造函数得到一个实例

Method method=clazz.getDeclaredMethod(methodName);//同样可以在后面传递参数,用与得到有参数的方法
Object returnValue=method.invoke(instance);//第一个参数是类对象,后面还可以传递运行这个方法的参数
xdop 2005-11-22
  • 打赏
  • 举报
回复
ASM, BCEL, Javassit 研究 一下 crack 很有用的

不过,最基本的东西是reflect原理,搞清楚这个,就都明白了
zeq258 2005-11-22
  • 打赏
  • 举报
回复
import java.lang.reflect.Method;

这个类,你去研究下,或许能找到答案!
zeq258 2005-11-22
  • 打赏
  • 举报
回复
真不明白,怎么有这样的需求呢,

楼上的方法,只能得到这个类的一个实例,

如果还要执行指定的方法,。。。。。我不会。

关注!等待高手来解答!
Bowner 2005-11-22
  • 打赏
  • 举报
回复
这是建立className对应的实例吧?那怎么调其对应的方法(methodName)呢?谢谢。
skycncomp 2005-11-22
  • 打赏
  • 举报
回复
class.forName(className).newInstance();

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧