2013-05-02 54 views
0

我有下面的代碼有問題:我need.setText參數被確認爲法,而不是作爲一個字符串

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

我有一個返回一個字符串值,命名爲多法「question1_x」( x是一個數字),方法question_number返回一個隨機數。 當我運行這樣的代碼時,「question1」文本設置爲「question1_x()」,但我需要它做的是將文本設置爲「question1_x()」方法返回它。只是我喜歡[「question1_」+ question_number()+「()」]被「.setText」看作是一種方法,而不是一個字符串。

預先感謝您:)

回答

2

Java不會讓你這樣做,除非你訴諸反思。 反思幾乎肯定是這個問題的錯誤解決方案。

任何你想要的時候有編號的方法和/或字段,退一步考慮使用適當的集合(比如列表)來代替。開始用需要數字的單一方法替換您的編號方法:

String question1(int questionNumber) 
-1

如果我明白這個權利,您希望通過其名稱調用setText中的方法。它不能像你想要做的那樣完成。 您需要使用Reflections Api。看看下面的例子:

class myClass = Class.forName(「」);

方法M = myClass.getMethod( 「」 question1_ 「+ QUESTION_NUMBER()」,(類[])NULL);

對象retVal的= m.invoke(object_to_invoke_on,自變量);

的setText(retVal的);

然而,這有性能損失。這比正常的方法調用慢2-3倍。在你的情況下,你可以完全避免這種設計。

+0

正如我在我的回答中所說的,反思是解決這個問題的錯誤。現有的設計是有缺陷的,應該修復。 – 2013-05-02 23:17:38

+0

我同意你的意見。因此,我在底部有註釋。 – 2013-05-02 23:19:19

相關問題