2 sinat 33415638 sinat_33415638 于 2016.03.14 14:03 提问

我想输进来“1”,就执行a1方法,输进来“2”,就执行a2方法,怎么弄?根据方法名做判断

我想输进来“1”,就执行a1方法,输进来“2”,就执行a2方法,怎么弄?根据方法名做判断
有很多个这样的方法,不想一个一个写

9个回答

leilba
leilba   Rxr 2016.03.14 14:44

不嫌麻烦的话用反射可以实现你所需要的效果:

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

public class Test {

    public void a1() {
        System.out.println("a1");
    }

    public void a2() {
        System.out.println("a2");
    }

    public void ax() {
        System.out.println("ax");
    }

    // 根据传入的名字来执行方法
    public static void executeMethode(String methodeName) throws NoSuchFieldException, NoSuchMethodException,IllegalAccessException, InvocationTargetException{
        Test test = new Test();

        Class testClass = Test.class;

        Method method = testClass.getDeclaredMethod("a"+methodeName);

        method.invoke(test);
    }

    public static void main(String []args) throws NoSuchFieldException, NoSuchMethodException, IllegalAccessException, InvocationTargetException{

        executeMethode("1");
    }
}

MCtime
MCtime   2016.03.14 14:08

str.contains("");

MCtime
MCtime 回复sinat_33415638: 用switch,不嫌麻烦就拼if else 楼下的都差不多
2 年多之前 回复
sinat_33415638
sinat_33415638 我想根据方法名字做判断啊,输进来“x”,就执行ax()方法
2 年多之前 回复
u012768347
u012768347   2016.03.14 14:12

如果函数签名不一样可以用重载,也可以用switch判断输入数字,执行不同方法

qq_34284605
qq_34284605   2016.03.14 14:13

switch str.contains("")
case 1
case 2

enpterexpress
enpterexpress   Rxr 2016.03.14 14:19
 switch(expression){
    case constant-expression  :
       statement(s);
       break; // 可选的
    case constant-expression  :
       statement(s);
       break; // 可选的

    // 您可以有任意数量的 case 语句
    default : // 可选的
       statement(s);
}
deltatang
deltatang   2016.03.14 14:44

从设计结构上找原因,问题不在于你的设想实现不了,而是在于你的设计模式。

tmgfdzh
tmgfdzh   2016.03.14 15:34

可以查看JAVA的反射机制

u013829202
u013829202   Rxr 2016.03.14 16:35

感觉你应该是初学者,用switch比较好。 深入点用设计模式,反射。

cmmchenmm
cmmchenmm   2016.03.14 16:36

int a=in.nextint;
if(a==1){
do a1;
}
else if(a==2){
do a2;
}

是这样?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
判断js函数是否存在,如果存在则执行
<br />转自:http://www.blogjava.net/jhyan/archive/2008/09/25/231060.html<br />假设funcName为函数名字,用如下方法就可以达到目标<br /><br />一定要添加try catch块,否则不起作用。<br /> 1      try <br /> 2       {  <br /> 3         if(typeof(eval(funcName))=="function")  <br /> 4         {<br /> 
java反射----根据方法名,类和对象执行对象的该方法
按例子讲,比较易懂。 例子:一个Test类,Test类中有run方法,通过字符串“run”执行该类的对象的run方法。 java代码: 1.类 public class Test { public void run(String a){ System.out.println(a+"反射的测试方法"); } } 2.实现方法 public static void main(Str
select * from A1,A2 where A1.a = A2.b
A表 a b 1 2 2  2 3  2 select * from A  where  a = b select * from A1,A2 where A1.a = A2.b 第一个是一个表判断 第二个是两个表内连接。
Python根据方法名调用方法
def do_foo(): print "foo!" def do_bar(): print "bar!" func_name1 = "do_foo" func_name2 = "do_bar" eval(func_name1)() eval(func_name2)()
JavaScript通过方法名字符串调用方法
&amp;lt;script&amp;gt;//定义函数var showme = function(aa,bb){    alert(aa+&quot; &quot;+bb);}//定义变量var a = &quot;aaa11&quot;;var b = &quot;bbb111&quot;;方法一: //window[&quot;showme&quot;](a,b);  //弹出 aaa11,bbb11 方法二//eval(&quot;showme('&quot;+a+&quot;','&quot;+b
每日一题之 hiho 1524 逆序对
描述 给定一个1-N的排列A1, A2, … AN,如果Ai和Aj满足i &amp;lt; j且Ai &amp;gt; Aj,我们就称(Ai, Aj)是一个逆序对。 求A1, A2 … AN中所有逆序对的数目。 输入 第一行包含一个整数N。 第二行包含N个两两不同整数A1, A2, … AN。(1 &amp;lt;= Ai &amp;lt;= N) 对于60%的数据 1 &amp;lt;= N &amp;lt;= 1...
java利用反射原理:根据某个对象的名称和方法去执行该方法。
java利用反射原理:根据某个对象的名称和方法去执行该方法。 实现类似C语言传递函数指针可以调用函数。钩子的作用。这个可以绕过接口 package com.utils; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class Reflec
XTU 1273 set
集合 http://202.197.224.59/exam/index.php/problem/read/id/1273 题目描述对于包含整数多值集合A={a1,a2,⋯,an},执行以下两步操作 1.将某些元素加上整数x 2.将某些元素减掉整数y请问能否使得A的元素全部相等?输入第一行是一个整数K(1≤K≤100),表示样例的个数。 每个样例的第一行是一个整数n(1≤n≤100,000
用js方法判断某个js方法是否存在,如果存在就执行的实现
if (typeof initFieldEvent != 'undefined' && initFieldEvent instanceof Function) { initFieldEvent(); }
Pell数列
查看 提交 统计 提问 总时间限制: 3000ms 内存限制: 65536kB 描述Pell数列a1, a2, a3, ...的定义是这样的,a1 = 1, a2 = 2, ... , an = 2 * an − 1 + an - 2 (n > 2)。 给出一个正整数k,要求Pell数列的第k项模上32767是多少。 输入第1行是测试数