我需要将.setText参数识别为方法,而不是字符串

时间:2013-05-02 22:56:27

标签: java android parameters settext

我遇到以下代码的问题:

question1.setText("question1_" + question_number() + "()");

我有多个返回字符串值的方法,名为“question1_x”(x是数字),方法question_number返回一个随机数。 当我运行这样的代码时,“question1”文本被设置为“question1_x()”,但我需要它做的是将文本设置为“question1_x()”方法返回它。我喜欢[“question1_”+ question_number()+“()”]被“.setText”视为方法而不是字符串。

提前谢谢你:)

2 个答案:

答案 0 :(得分:2)

除非你采用反射,否则Java不允许你这样做。 反思几乎肯定是解决这个问题的错误方法。

每当您想要编号方法和/或字段时,请退一步并考虑使用正确的集合(例如,列表)。首先使用带有数字的单个方法替换编号的方法:

String question1(int questionNumber)

答案 1 :(得分:-1)

如果我理解这一点,你想要通过名称调用setText中的方法。它不能像你想要的那样完成。 你需要使用Reflections Api。请看下面的例子:

  

类myClass = Class.forName(“”);

     

方法m = myClass.getMethod(“”question1_“+ q​​uestion_number()”,(Class [])null);

     

对象retVal = m.invoke(object_to_invoke_on,arguments);

     

的setText(retVal的);

然而,这有性能损失。它比普通的方法调用慢2-3倍。在您的情况下,您可以通过正确设计来完全避免这种情况。