2011-12-05 142 views
0
public class Test 
{ 
    private ArrayList<Object> list = new ArrayList<Object>(); 

    private void addToList(Object o) 
    { 
     list.add(o); 
    } 
} 

添加到列表中。如果我通過反射從外部類調用方法addToList(Object o),是不是我需要採取以佔反射調用可以訪問列表?通過反射

BMethod method = builderClass.getDeclaredMethod("addToList", new Class<?>[]{Object.class}); 

我使用BlueJ API,它類似於Java中的反射,但包裝對象因此BM方法。

我只是想知道,如果該方法需要有一定的參考到ArrayList,因爲它不能通過反射調用看到它

感謝

我設法解決這個問題。對於那些想要沒有答案的人 - 我調用的方法,我添加了代碼來反射性地獲取內部字段。

回答

0

你必須調用method.setAccessible(true)Method對象

+0

多數民衆贊成在討厭,一個BMethod沒有那可用:( – Biscuit128

+0

在這種情況下,切換到一個體面的IDE,並擺脫BlueJ – Robin

+0

我正在開發一個在Eclipse中擴展BlueJ:/ – Biscuit128

0

不知道爲什麼你想要做這樣的事情,但它應該工作

  1. 檢索方法(你已經有了)
  2. 使它accessible它允許你調用該方法,雖然它是私人的
  3. Invoke該方法