2017-04-09 3 views
0

私はMenuオブジェクトを持っています。Javaリフレクション:ArraylistとしてのFieldの値の取得方法<>

これはArrraylist<MenuItemImpl>〜 "mItems"という名前です。これは隠しです。

MenuItemImpl)は、保護されたクラス&です。 クラス(here

ここで、このarraylistをどのように取得できますか。 f.getで

@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; 
} 

()私はnew Arraylist<Object>を使用していますが、例外

はme.Tanksが

答えて

1

ああ、私は私の答えを得る助けてくださいます。

for(Field f: list) 
     { 
      if(f.getName().equals("mItems")) 
      { 
      f.setAccessible(true); 
      return f.get(menu); 
      } 
     } 
関連する問題