2012-06-17 120 views
1

我在名爲AnyLogic的模擬環境中工作,它使用Java作爲其底層代碼。我可以在java中動態引用一個對象嗎?

在我的示例中,用戶繪製流程圖,並在運行時實例化流程圖中的每個元素。我能確定哪些用戶通過代碼得出:

  LinkedList eo = (LinkedList) this.getEmbeddedObjects(); 
  • 返回代表在流程圖中的所有對象的名稱的字符串列表。

我想動態訪問這些對象的方法,但我是新來的Java,不知道如何去做這件事。從我理解的反射我可以實例化一個classForName,但在這種情況下,我已經有實例化對象,我想使用字符串來訪問它們。

我不確定如何繼續並欣賞任何建議。

感謝:-)

回答

1

您可以使用Java reflection API作爲任務。

雖然這個API有些冗長。如果這是一個問題,那麼你應該去一個可用的fluentreflectionAPIs

+0

非常感謝 - 這對我來說是一個很大的幫助!我選擇繼續使用MIRROR--實施起來要容易得多。我非常欣賞API參考和建議的API,這些使我的工作變得更加簡單。 – user1461521

2

http://java.sun.com/developer/technicalArticles/ALT/Reflection/

你可以得到方法的名稱列表,找到你想要的,並調用它。

+0

非常感謝你對這個非常有幫助的鏈接和你的快速反應!我已經使用MIRROR作爲missingfaktor的建議,因爲它使我的代碼更具可讀性(並且更容易),但這種背景對於我理解反射的內部工作機制至關重要。 – user1461521

0

什麼是「流程圖中所有對象的名稱」? 你有一些HashMap按照名字存儲對象嗎?如果是這樣,只需按名稱獲取對象並直接調用其方法,而不需要進行任何反射。

+0

謝謝阿列克謝 - 我指的是包含對象名稱字符串的LinkedList。我得到了我需要的答案(見上面的答案),但我感謝你的幫助:-) – user1461521

相關問題