[英]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.