Collections.emptyList () возвращает Список <Объект>?

Ошибка синтаксиса: ошибка синтаксиса, неожиданный T_XXX

Случается, когда в неожиданном месте есть T_XXX токен , несбалансированные (лишние) круглые скобки, использование короткого тега без его активации в php.ini и т. д.

Вопросы, относящиеся:

Для получения дополнительной помощи см .:

  • http://phpcodechecker.com/ - что дает более полезные объяснения ваших синтаксических проблем.

259
задан Kai 19 April 2013 в 02:27
поделиться

3 ответа

Проблема, с которой Вы встречаетесь, то, что даже при том, что метод emptyList() возвраты List<T>, Вы не предоставили ему тип, таким образом, это принимает значение по умолчанию к возврату List<Object>. Можно предоставить параметр типа и иметь код, ведут себя как ожидалось, как это:

public Person(String name) {
  this(name,Collections.<String>emptyList());
}

Теперь, когда Вы делаете уроки, компилятор может выяснить универсальные параметры типа для Вас. Это назвало вывод типа. Например, если Вы сделали это:

public Person(String name) {
  List<String> emptyList = Collections.emptyList();
  this(name, emptyList);
}

тогда эти emptyList() вызов правильно возвратился бы List<String>.

435
ответ дан InverseFalcon 23 November 2019 в 02:39
поделиться

Вы хотите использовать:

Collections.<String>emptyList();

при рассмотрении источника для того, что emptyList, Вы видите, что это на самом деле просто делает

return (List<T>)EMPTY_LIST;
95
ответ дан carson 23 November 2019 в 02:39
поделиться

emptyList метод имеет эту подпись:

public static final <T> List<T> emptyList()

, Что <T>, прежде чем список слов означает, что выводит значение универсального параметра T от типа переменной, которой присвоен результат. Так в этом случае:

List<String> stringList = Collections.emptyList();

на возвращаемое значение тогда ссылается явно переменная типа List<String>, таким образом, компилятор может понять его. В этом случае:

setList(Collections.emptyList());

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

26
ответ дан Dan Vinton 23 November 2019 в 02:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: