Java反射:如何获取Arraylist字段的值<&燃气轮机;
我有一个菜单对象 这有一个Java反射:如何获取Arraylist字段的值<&燃气轮机;,java,android,reflection,Java,Android,Reflection,我有一个菜单对象 这有一个Arrraylist到“mItems”名称。这是隐藏 (menuitemmpl)是一个隐藏和保护类。 见第()类 现在,我怎样才能得到这个arraylist @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { List<Field> list = getAllFie
Arrraylist
到“mItems”名称。这是隐藏
(menuitemmpl
)是一个隐藏和保护类。
见第()类
现在,我怎样才能得到这个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;
}
@覆盖
public void onCreateContextMenu(ContextMenu菜单,视图v,ContextMenu.ContextMenuInfo菜单信息)
{
列表=getAllFields(菜单);
用于(字段f:列表)
{
如果(f.getName().equals(“mItems”))
{
f、 setAccessible(true);
返回f.get(/*这里*/);/哦,我得到了我的答案
for(Field f: list)
{
if(f.getName().equals("mItems"))
{
f.setAccessible(true);
return f.get(menu);
}
}