2011-11-27 43 views
4

我想在JVM7中用invokedynamic實現「duck typing」。我創建了兩個不同的類,它們都有方法greet(),它返回String。我隨機選擇其中之一,將實例存儲在堆棧上,並調用invokedynamic(使用ASM)。InvokeDynamic - 如何訪問引導方法中的參數?

我不知道我是否可以在bootstrap方法中訪問參數。因爲在不知道堆棧上有哪個對象以及應該返回哪個方法的情況下,我無法返回適當的CallSitetarget

如果我的方法錯了,那麼正確的方法是什麼?

回答

2

我會回答自己。

  1. 綁定CallSite用自己的靜態方法(例如lookup(CallSite cs, Object[] args)
  2. args[0]是接收器,它們的其餘均爲參數。做任何你在查找方法希望。

如果您有興趣在行內緩存(我是),看看這兩個鏈接:

+0

這是不是真的有幫助...你的'invokedynamic'打電話前框在數組中的被叫方和參數? – Clashsoft

+0

如果您仍然可以詳細瞭解您的解決方案,那將會很不錯。 – lschuetze

相關問題