簡體   English   中英

Java反射:如何將Field的值獲取為Arraylist <>

[英]Java reflection: how get value of Field as Arraylist<>

我有一個Menu對象。

它具有一個Arrraylist<MenuItemImpl>到“ mItems”的名稱。 這是隱藏的。

MenuItemImpl )是一個隱藏和受保護的類。 參見課程( 在這里

現在,我如何獲得此arraylist。

@Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
    { 

      List<Field> list = getAllFields(menu);
      for(Field f: list)
      {
          if(f.getName().equals("mItems"))
           {
             f.setAccessible(true);
             return f.get( /* here */ );   // <<--- I use new Arraylist<Object> , but get exception
           }
       }
   }

public static List<Field> getAllFields(Object obj)
    {
        List<Field> res = new ArrayList<>();
        res.addAll(Arrays.asList(obj.getClass().getDeclaredFields()));
    if (obj.getClass().getSuperclass() != null)
    {
        res.addAll(Arrays.asList(obj.getClass().getSuperclass().getDeclaredFields()));
    }

    return res;
}

在f.get()中,我使用new Arraylist<Object> ,但會出現異常

請幫助我。

哦,我知道了。

for(Field f: list)
      {
          if(f.getName().equals("mItems"))
           {
             f.setAccessible(true);
             return f.get(menu);
           }
       }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM