中易网

Java里面怎么通过变量中的值执行某个对象中相应的方法

答案:5  悬赏:40  
解决时间 2021-02-18 05:16
有一个String类型的变量meName,然后还有一个类MyCal的对象my,现在比如说MyCal里面有A,B,C,D ……多个方法(方法非静态,少说也有百个),现在要meName是A的话就执行my对象中的A方法,是B的话就执行B方法。我要怎么做呢?用反射机制可以吗?要怎么写?
最佳答案
你想过一个问题没有,如果我在MyCal里面有一个方法是A() 还有一个方法是A(int a) 。那我meName如果是A,那么到底执行哪个方法呢?? 所以不仅要给方法名,还必须要给参数的类型才行吧。

当然,如果你的A B C D都是A() B() C()这种无参的方法,那就好办了,给你一个例子:
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) throws Exception {
String s="A";
Class clazz =Test.class;
Method method =clazz.getMethod(s);
method.invoke(clazz.newInstance());
}
public void A(){
System.out.println("方法A执行了");
}
}
全部回答
肯定用反射才能实现。 对象有了,还知道是什么类型,就可以取它的方法了,但是你要知道方法的参数~
你说的这个 meName 和 MyCal有什么关系吗? 需要用到序列化的东西吗??? 反射机制应该用到,可不清楚你的问题啊
a
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class TestClass{ public static void main(String[] args) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { stud1 s = new stud1(); Method[] mm = s.getClass().getMethods(); for (int i = 0; i < mm.length; i++) { System.out.println(mm[i]); } } } class stud1 { public void m1() { } public String m2() { return "x"; } public int m3() { return 1001; } } 返回结果: public void stud1.m1() public java.lang.String stud1.m2() public int stud1.m3() public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException public final void java.lang.Object.wait() throws java.lang.InterruptedException public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException public boolean java.lang.Object.equals(java.lang.Object) public java.lang.String java.lang.Object.toString() public native int java.lang.Object.hashCode() public final native java.lang.Class java.lang.Object.getClass() public final native void java.lang.Object.notify() public final native void java.lang.Object.notifyAll() 我是这样的思路从输出结果我们不难看出自己定义的类的方法总有个类名加方法名 所以只要把类名+方法名截取出来后再把类名也截取掉剩下的就是你想要的方法名 最后拿这个方法名与meName比较就可以了 以上希望对你有所帮助!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
山居秋暝这首诗是什么诗体?
金萱达五金地址在哪,我要去那里办事
算命 生辰八字的四句诗
海马马用什麼帮助它在水中活动,它属於什麼累
销售部的业务员每天都做什么?
大我与小我(500以上议论文)思修作业
汽车水箱加错机油对车有没有影响
网速被路由器限速控制,有什么破解的办法吗?
胜利经营部地址在哪,我要去那里办事
红牛 佳得乐 脉动哪款的运动型饮料更适合运动
关于增值税、消费税的纳税期限 “以1日、3日
王明不知道怎样到那儿用英语怎么说
请问我是用别人无线网上网的,之前电脑都能连
为营业执照年检,给了份实地审查表,还说要查
微信名字叫上善若水的人群
推荐资讯
关于电磁铁发热问题
上个月26日来的月经 这个月13号又来了 去医院
897披萨宅急送在哪里啊,我有事要去这个地方
java程序员用thinkpad笔记本合不合适?用哪个
车贷有要求GPS收费的吗谢谢
打车从洪兴建材城到长途汽车站多少钱
你好,请问下solr实现拼音搜索,你是怎么解决
用绵延起伏、郁郁葱葱、诗情画意、密密麻麻、
K贷的链接谁有,给我发一个。
本人男,身高一米八,体重两百四十斤,今年19
approach to是什么意思
X-4y=-1 2x+y=16怎么做
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?