Есть ли разница между этими двумя типами?
Да.String
- это класс, а CharSequence
- это интерфейс. Если метод принимает CharSequence
, ему требуется только аргумент для реализации методов в интерфейсе, что дает большую гибкость, чем если бы он былпринимает только String
.
Следующие классы API реализуют CharSequence
: CharBuffer
, Segment
, String
, StringBuffer
, StringBuilder
.Таким образом, String
является CharSequence
и, таким образом, может быть передан методу, который принимает CharSequence
.
И что более важно, есть лиПрисущая опасность, если я отправлю функции строку вместо последовательности символов ???
Нет , опасности нет.String
правильно реализует CharSequence
, и это все, что требуется для правильной работы метода.