我有一个菜单对象。
这有Arrraylist<MenuItemImpl>
到&#34; mItems&#34;名称。这是隐藏。
(MenuItemImpl
)是一个隐藏&amp;受保护的类。
见课程(here)
现在,我怎么能得到这个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>
,但得到异常
请帮帮我。坦克
答案 0 :(得分:1)
哦,我得到了答案。
for(Field f: list)
{
if(f.getName().equals("mItems"))
{
f.setAccessible(true);
return f.get(menu);
}
}