|
|
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
Встретил вопрос в тесте. Кучу времени читал всякие статьи, книги, SO - в голове каша. Я так понимаю, что всё это можно объяснить а уровне концепции. Помогите понять пожалуйста, правда сложно. Есть такое объявление класса: Код: java 1. какие строчки из приведенных ниже можно добавить в этот класс? Код: java 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2014, 23:29 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
наверное чтобы понять вопрос надо понять причины почему не подходят некоторые из методов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2014, 23:31 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
redwhite90, А что за тест? ИМХО проще всего вставить это все в IDE и проверить)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 00:14 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
redwhite90наверное чтобы понять вопрос надо понять причины почему не подходят некоторые из методовНарушение правил перегрузки функции: неоднозначный набор аргументов любой аргумент с типом A<...> будет затираться до A . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 00:16 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
no56892redwhite90, А что за тест? ИМХО проще всего вставить это все в IDE и проверить)) examlab.org IDE мне не помогает понять причин, а иногда иподсвечивает неправильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 01:05 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
Usmanredwhite90наверное чтобы понять вопрос надо понять причины почему не подходят некоторые из методовНарушение правил перегрузки функции: неоднозначный набор аргументов любой аргумент с типом A<...> будет затираться до A . я понимаю, что лениво, но можно более конкретно и подробно, пожалуйста? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 01:05 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
redwhite90, - У всех методов одно и то же имя - это и есть перегрузка метода useMe (overloading). - Все угловые скобки с типами в сигнатуре методов отбрасываются - механизм https://www.ibm.com/developerworks/ru/library/j-jtp01255/#N10331] cтирания - Разнообразие возвращаемых результатов не играет в данном случае никакой роли - В результате, если вызвать метод с НЕ Object агументом, получится неоднозначность и компилятор (из-за стирания) не сможет выбрать нужный метод: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 06:02 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
Usman, Не, тут вопрос какие строчки можно вставить независимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 11:25 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 12:27 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
Usman, Ладно, задам конкретный вопрос. Код: java 1. 2. 3. так нельзя! авторjava: type argument K is not within bounds of type-variable K я так понял, что К в методе скрывает K класса ну и как бы A<K> получается не гарантирует, что это K это есть Number С другой стороны Код: java 1. 2. 3. так сделать можно, но не понимаю почему. ведь A<? super K> это совсем не обязательно удовлетворяет условию A<K extends Number> В общем исходя из этого делаю вывод, что моя логика нихрена неправильная и прошу вашего совета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 12:53 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
redwhite90так нельзя!Почему нельзя, можно: Код: java 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 13:02 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
Usmanredwhite90так нельзя!Почему нельзя, можно: Код: java 1. 2. 3. Код: java 1. 2. 3. ок, давай так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 13:07 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
redwhite90, Код: java 1. и Код: java 1. разные вещи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 13:08 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
redwhite90, брэйнфака добавляет то , что это Код: java 1. 2. 3. перестаёт быть валидной конструкцией ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 13:33 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
redwhite90перестаёт быть валидной конструкциейДа, из-за super ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 13:45 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
redwhite90, Код: java 1. Здесь конфликт generic метода и generic класса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 13:46 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
Usmanredwhite90, Код: java 1. Здесь конфликт generic метода и generic класса кажется мы о разном: public abstract class A<K extends Number>{ // public abstract <K> A<? extends Number> useMe (A<? super Object > k); //нельзя так public abstract <K> A<? extends Number> useMe (A<? super K> k); //так разрешено } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 13:51 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 13:53 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
redwhite90 Код: java 1. а зачем тогда <K> ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 14:03 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
Usman, она же хайдится, давайте назовём её ZU в этом методе, если так будет проще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 14:06 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
итого получаем public abstract class A<K extends Number>{ public abstract <ZU> A<? extends Number> useMe (A<? super ZU> k); //так разрешено. Почему? } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 14:07 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
блин Код: java 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 14:07 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
redwhite90, это валидная конструкция и здесь нет конфликта generic метода с generic классом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 14:18 |
|
||
|
определение generic метода в пределах generic класса.
|
|||
|---|---|---|---|
|
#18+
Usman, Код: java 1. 2. 3. тут какой конфликт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 14:32 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38582047&tid=2127529]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
412ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 772ms |

| 0 / 0 |
