Как я могу создать универсальный метод, ограниченный повторяющимися типами?

#java #generics

#java #дженерики

Вопрос:

В настоящее время я пытаюсь создать универсальный метод, который принимает любой объект, который реализует итерацию, но я продолжаю застревать. Я думаю, что что-то не так с тем, как я записал свой параметр. Это то, что у меня есть до сих пор. Я думаю, что единственная часть, которую мне нужно исправить, — это параметр.

 public class Main 
  {
    public static <T extends Iterable> String getToString(Iterable<T> objects)
        {
             String total = "";
             objects.toString(); 
             for(T s: objects){
             total  = s   "*";
        }
        return total;
 } 
 

Проблема в том, что когда я его вызываю,

     String words = "Hello there how are you";
    Iterable<String> it = Arrays.asList(words.split(" "));
    System.out.println(problem2_getElements(it));
 

Я получаю сообщение об ошибке, которое

 The method getToString(Iterable<T>) in the type Main is not applicable for the arguments (Iterable<String>)
 

Ответ №1:

T не должно быть Iterable . T должен быть тип элемента коллекции, которую вы перебираете:

 public static <T> String getToString(Iterable<T> objects)
{
    String total = "";
    objects.toString(); 
    for(T s: objects){
         total  = s   "*";
    }
    return total;
}