Листая Guava библиотеки я увидел эту странную подпись на методе readLines из файлов класса:Java странно общий тип возвращаемого
public static <T> T readLines(File file,
Charset charset,
LineProcessor<T> callback)
Я знаю немного о воспроизведенных в Java, но это озадачило меня.
Что здесь означает двойной Т? И почему первый в угловых скобках?
ОБНОВЛЕНИЕ: Спасибо за ответы. Я все еще не понимаю, почему я должен использовать T внутри скобок. Почему, например, не может это быть просто:
public static <> T readLines()
или
pulibc static <K> T readLines()
Или диктуют, что такое же письмо необходимо использовать синтаксис Java?
Теперь this даже wierder:
static <T> void fromArrayToCollection(T[] a, Collection<T> c) {
как метод может иметь тип общий обратный и аннулируются?
T в угловых скобках НЕ является типом возврата; это параметр типа для метода. –
Обратите внимание, что если в приведенных выше подписях не было, компилятор, естественно, ожидал бы найти «класс T {...}», определенный где-то. Что-то должно сообщить компилятору, что вы хотите, чтобы там был параметр * type *, называемый T. И это так. –