0

我对以下代码有疑问:

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

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

先感谢您 :)

4

2 回答 2

2

Java 不会让你这样做,除非你诉诸反射。反射几乎肯定是解决这个问题的错误方法。

任何时候你想要有编号的方法和/或字段,退后一步,考虑使用适当的集合(比如,一个列表)来代替。首先用带数字的单个方法替换您的编号方法:

String question1(int questionNumber)
于 2013-05-02T23:00:12.357 回答
-1

如果我理解这一点,您想通过名称调用 setText 中的方法。它不能按照您尝试的方式完成。您需要使用反射 API。看下面的例子:

类 myClass = Class.forName("");

方法 m = myClass.getMethod(""question1_" + question_number()", (Class[]) null);

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

设置文本(retVal);

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

于 2013-05-02T23:13:33.907 回答