Usando la reflexión para obtener un método; no se encuentran los parámetros del método de los tipos de interfaz

Tal vez me estoy perdiendo algo simple aquí, pero ¿cómo obtengo un método cuyo parámetro es una interfaz que utiliza la reflexión?

En el siguiente casonewValue seria unList<String> llamadofoo. Entonces llamaríaaddModelProperty("Bar", foo); Pero esto solo funciona para mí si no uso la interfaz y solo usoLinkedList<String> foo. ¿Cómo uso una interfaz paranewValue y obtener el método demodel que tiene una interfaz como parámetroaddBar(List<String> a0)?

Aquí hay un ejemplo más detallado. (Residencia en:Este ejemplo)

public class AbstractController {
  public setModel(AbstractModel model) {
    this.model = model;
  }
  protected void addModelProperty(String propertyName, Object newValue) {
    try {
      Method method = getMethod(model.getClass(), "add" + propertyName, newValue);
      method.invoke(model, newValue);
    } catch (NoSuchMethodException e) {
    } catch (InvocationTargetException e) {
    } catch (Exception e) {}
    }
}

public class AbstractModel {
  protected PropertyChangeSupport propertyChangeSupport;
  protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
    propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
  }
}

public class Model extends AbstractModel {
  public void addList(List<String> list) {
    this.list.addAll(list);
  }
}

public class Controller extends AbstractController {
  public void addList(List<String> list) {
    addModelProperty(list);
  }
}

public void example() {
  Model model = new Model();
  Controller controller = new Controller();
  List<String> list = new LinkedList<String>();
  list.add("example");
// addList in the model is only found if LinkedList is used everywhere instead of List
  controller.addList(list);
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta