1 Востаннє редагувалося AM (03.02.2015 02:59:46)

Тема: як правильно читати назви Generic методів

Питання навіть не стільки про Generics скільки про правильність читання сігнатури методів (здається так це називаєтсья) і класів

Отже питання як правильно (українською) прочитати цей метод.

static <T extends Comparable<? super T>> Comparator<T> reverseOrder( )

Тобто цікавлять пояснення тої частини, що в діамантових дужках <T extends Comparable<? super T>> . Наскільки я це розумію, ця частина потрібна для того, щоб пояснити яким типом повинен бути тип Т, для якого повертається компаратор. І тип Т повинен наслідувати (чи розширяти чи реалізувати) інтерфейс Comparable для типу, який є супертипом для Т.

Але якщо б ця частина в діамантових дужках, що передує Comparator<T> була б просто поясненням типу Т, то що тоді значить (як читається) цей метод

static <T> Comparator<T> nullsFirst(Comparator<? super T> comp)

Навіщо після static вжито <T>, якщо в даному випадку він нічого не пояснює. Тобто моя перша версія не вірна. А яка вірна і як має бути. Вже заплутався.

Як розумієте лише вчу Java ( та і взагалі програмування). Буду вдячний за допомогу.

2

Re: як правильно читати назви Generic методів

Чому ви думаєте, що в другому випадку T нічого не пояснює? Адже є аргумент, в якого тип Comparator <? super T>, тобто компаратор для будь-якого з батьківських класів T.

3

Re: як правильно читати назви Generic методів

А що б змінилось якщо б метод був пвикладений так
static Comparator<T> nullsFirst(Comparator<? super T> comp)