java根据传入参数不同调用不同的方法,求高手支妙招!
比如invokeMethod(Stringmethod);传入“1”调用method1(),传入“2”调用method2()...要求:最好不使用反射,不使用ifelse...
比如invokeMethod(String method); 传入“1”调用method1(),传入“2”调用method2()...
要求:最好不使用反射,不使用if else ,不使用switch case
可以考虑抽象类,接口等。。。 展开
要求:最好不使用反射,不使用if else ,不使用switch case
可以考虑抽象类,接口等。。。 展开
展开全部
比较常用或者通用的方式是采用if语句。
语法:
if (逻辑条件判断)
{
语句块
}else if(逻辑条件判断){
}else{
}
举例:
public class A{//定义一个类A
public void s1(){//定义方法s1
}
public void s2(){//定义方法s2
}
public void s3(){//定义方法s3
}
public void show(int a){//定义一个方法show
if(a==1){//如果a等于1
s1();//调用方法s1
}else if(a==2){
s2();//调用方法s2
}else{
s3();//调用方法s3
}
}
}
展开全部
使用反射可以如下:
public class Test {
public void method1() {
System.out.println("method1() invoked");
}
public void method2() {
System.out.println("method2() invoked");
}
public void method3() {
System.out.println("method3() invoked");
}
public void invokeMethod(String methodName) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
Test.class.getMethod(methodName,null).invoke(this,null);
}
public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
new Test().invokeMethod("method2");
}
}
不过按你的要求不知道怎么做
追问
不使用反射
追答
通过String来调用方法,不反射怎么调用?java中的方法调用 可以通过类(对象)或者反射,你这里是string, 要么就通过Class.forName().newInstance()得到对象,然后来调用,要么就通过反射。通过newInstance()得到对象一堆限制,要不通过Constructor还不是反射?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Integer.parseInt(s)==1?method1():method2();
更多追问追答
追问
你是在逗我么?
追答
我其实也忘记了,很少用这个,我记得以前可以用类似三目运算的方式去做,我在项目里就曾经这么做过,你说不能用if else,所以我才想到了这个,就当你逗你吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
bad requirement.
invokeMethod("method"+1);
invokeMethod("method"+2);
invokeMethod("method"+1);
invokeMethod("method"+2);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用switch语句
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询