Rob*_*use 1 java methods field call
在Java中是否可以基于字段值调用方法?例如,我问用户他们想要什么苏打水.他们输入他们的选择,并且用于保存其选择的字段的值用于调用该方法.
显然下面的代码不起作用.但我希望它能说明我的意图.这种事情在Java中甚至可能吗?
目标是在不使用IF或SWITCH语句的情况下有效切换.
import java.util.Scanner;
public class FieldResolutionTest
{
public static void main (String[] args)
{
Scanner inputScanner = new Scanner(System.in);
MethodTester test = new MethodTester();
System.out.println("Please enter ONE or TWO");
String selection = inputScanner.nextLine();
test.(selection)();
}
}
public class MethodTester
{
public void ONE()
{
System.out.println("You ran method ONE");
}
public void TWO()
{
System.out.println("You ran method TWO");
}
}
Run Code Online (Sandbox Code Playgroud)
它是与反思技术上是可行的,但如果你有一个已知的可能方法,数量有限,这将是更易于使用switch语句(或if/ else如果你没有安装Java 7):
switch (selection) {
case "ONE":
test.ONE();
break;
case "TWO":
test.TWO();
break;
// etc.
default:
System.out.println("Invalid method!");
break;
}
Run Code Online (Sandbox Code Playgroud)
如果这些方法是动态的,或者你正在测试很多类,并且你仍然希望使用反射路径,那么它看起来像这样:
try {
Method m = MethodTester.class.getMethod(selection);
m.invoke(test);
} catch (NoSuchMethodException nsme) {
System.out.println("Invalid method!");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |