Работа с рекурсией и универсальными интерфейсами

У меня есть три общих интерфейса (с обратной связью между двумя из них), и я хочу обработать их рекурсивным методом:

public interface User<R extends Role<R,U>, U extends User<R,U>>
{
  public R getRole();
  public void setRole(R role);
}

public interface Role<R extends Role<R,U>,U extends User<R,U>>
{
  public List<R> getRoles();
  public void setRoles(List<R> roles);

  public List<U> getUser() ;
  public void setUser(List<U> user);
}

Теперь я хочу сделать несколько обработка с рекурсией в моем классе Worker :

public <R extends Role<R,U>,U extends User<R,U>> void recursion(List<R> roles)
{
  for(R role : roles)
  {
    recursion(role.getRoles());
  }
}

Я получаю эту ошибку, но не понимаю, почему это не работает или как я могу решить эту проблему:

Bound mismatch: The generic method recursion(List<R>) of type Worker is not
applicable for the arguments (List<R>). The inferred type User<R,User<R,U>>
is not a valid substitute for the bounded parameter <U extends User<R,U>>
5
задан Thor 17 August 2011 в 06:58
поделиться