2010-11-11 98 views
1

在Ruby中,您可以執行"var1".constantize以獲取實際變量var1。 Ruby也具有Model.Send(「方法名稱,參數可以在這裏,等等」),它將與實際調用該方法相同。Java/Ruby:有沒有辦法在Java中執行.constantize或Object.send()?

我想要做的是...有點棘手...我想要字符串「var1 == var2」在我的Java應用程序中轉換爲實際變量,然後進行評估。

有沒有辦法做到這一點?

回答

2

您是否考慮過使用JRuby

至於你的問題:

  1. 沒有同行,以constantize,將允許類似的語法一個eval,您可以在傳遞一個字符串,並將其轉換爲代碼在Java中。你可以像Class.forName一樣從String中加載一個特定的類,但這聽起來並不是你正在尋找的東西。
  2. 您可以使用Java反射API來動態調用類上的方法請查看Jakarta Commons BeanUtils瞭解可能有所幫助的一些實用方法。
0

在Java中,如果您希望對變量進行動態查找,您通常會將它們放置在Map中,並使用該Map的鍵進行查找。

你能解釋一下你正在做的更詳細的工作嗎?我懷疑你正在嘗試做什麼可以簡單地用Java中的不同方式完成。

2

在Java中,類似的行爲是通過Reflection API實現的。但是,由於Java是一種編譯語言,編譯時會刪除局部變量(在方法,構造函數,參數等內)信息。 但是,您仍然可以完全訪問類名稱,層次結構,方法和字段(類變量)。
一個好的起點是Object的Reflection API tutorial或getClass()方法。

相關問題