使用变量调用的控制方法

时间:2014-12-18 04:29:12

标签: java reflection

所以我试图结合多种方法,根据不同的参数对数组进行排序以进行优化。除了这一行,整个方法是相同的:

for (int k = i; k >= 0 && currData.METHOD() <= playerData[k].METHOD(); k--) {

    //The stuff inside the method is the same
}

将METHOD更改为不同的访问器方法,以控制数组的排序方式。

我做了一些搜索并遇到了Java反射(我不确定它是什么)。有人可以解释我如何使用它来解决我的问题,或另一个更好的解决方案?感谢。

2 个答案:

答案 0 :(得分:0)

不要在这里使用反射。使用多态,它会帮助。

答案 1 :(得分:0)

只要存储了变量,就可以执行以下操作:

String what = new Scanner(System.in).nextLine();
System.out.println(what.getClass().getMethod(what).invoke(what));

如果我输入单词 length 作为我的输入,则输出为6.因为代码调用我在字符串上输入的函数。它们不一定是相同的变量,你可以做类似的事情:

for (int k = i; k >= 0 && currData.getClass().getMethod(methodName).invoke(currData)
<= playerData[k].getClass().getMethod(methodName).invoke(playerData[k]); k--)

如果需要,您还可以将参数传递给函数,它是函数名后面的第二个参数。只需使你的变量等于你想要调用的函数名,并且你的叔叔应该像魅力一样工作。