|
|
|
выбор нужного метода для вызова в контексте генериков
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. кто может объяснить поведение прокомментированное в коде? P.S. Да я знаю, что 1.можно написать так: converter.<нужный тип>.... 2. сначала ищется точный тип, потом boxing/unboxing, потом boxing/unboxing + var args Вопрос в том почему так? P.S. украдено отсюда http://stackoverflow.com/questions/18460239/java-generic-method-overloading-ambiguity?rq=1 но видимо знаний в английском не хватило чтобы осознать представленный там ответ. Рассчитываю на вашу помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 19:44 |
|
||
|
выбор нужного метода для вызова в контексте генериков
|
|||
|---|---|---|---|
|
#18+
redwhite90, http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.12.2 The first phase (§15.12.2.2) performs overload resolution without permitting boxing or unboxing conversion, or the use of variable arity method invocation. If no applicable method is found during this phase then processing continues to the second phase. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 20:23 |
|
||
|
выбор нужного метода для вызова в контексте генериков
|
|||
|---|---|---|---|
|
#18+
Usman, ну и ... ? я вроде это даже в вопросе написал, что boxing на втором этапе только случается..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 21:19 |
|
||
|
выбор нужного метода для вызова в контексте генериков
|
|||
|---|---|---|---|
|
#18+
redwhite90, Против JLS не попрешь... http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#d5e20240 Here, the most specific declaration of method test is the one taking a parameter of type ColoredPoint. Because the result type of the method is int, a compile-time error occurs because an int cannot be converted to a String by assignment conversion. This example shows that the result types of methods do not participate in resolving overloaded methods, so that the second test method, which returns a String, is not chosen , even though it has a result type that would allow the example program to compile without error. P.S. Тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 21:49 |
|
||
|
выбор нужного метода для вызова в контексте генериков
|
|||
|---|---|---|---|
|
#18+
Usman, Плиз, сформулируйте целиком мысль в связке с моим примером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 21:59 |
|
||
|
выбор нужного метода для вызова в контексте генериков
|
|||
|---|---|---|---|
|
#18+
redwhite90, Приоритет перегруженного метода будет выше, если его сигнатура наиболее точно подходит списку фактических параметров. Способ "намекнуть компилятору на нужный метод по типу возвращаемого значения" - не прокатит, потому что перегрузка так неработает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 22:26 |
|
||
|
выбор нужного метода для вызова в контексте генериков
|
|||
|---|---|---|---|
|
#18+
Usman, возникает вопрос что значит "наиболее точно" знаете что будет если заменить Код: java 1. на Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 23:12 |
|
||
|
выбор нужного метода для вызова в контексте генериков
|
|||
|---|---|---|---|
|
#18+
redwhite90знаете что будет если заменитьЧто будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2014, 04:24 |
|
||
|
выбор нужного метода для вызова в контексте генериков
|
|||
|---|---|---|---|
|
#18+
Usman, ambigious ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2014, 09:51 |
|
||
|
выбор нужного метода для вызова в контексте генериков
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, не любишь такое задротство объяснять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 00:07 |
|
||
|
выбор нужного метода для вызова в контексте генериков
|
|||
|---|---|---|---|
|
#18+
redwhite90не любишь такое задротство объяснять? Обстановка в стране сложная. Много всего навалилось. Ну, а по вопросам, уже нашел раздел JLS где для overload-ов объяснятеся выбор the most specific метода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 11:05 |
|
||
|
выбор нужного метода для вызова в контексте генериков
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, найти то нашёл, но в полной меое осознать не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 12:08 |
|
||
|
выбор нужного метода для вызова в контексте генериков
|
|||
|---|---|---|---|
|
#18+
redwhite90, Два метода Код: java 1. 2. Очевидно что второй the most specific overload. Понятно почему? Очевидно что такой вызов линкуется на второй метод. Код: java 1. Очевидно? Соответственно метод возвращает MyContainer<IntWrapper>, который к MyContainer<Integer> не приводится. Левая часть присвоения никак не может влиять, на то какой из двух методов компилятор выберет в правой части. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 12:20 |
|
||
|
выбор нужного метода для вызова в контексте генериков
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, всё логично. Но есть ли способ без .<trololo> явно вызвать нужный метод? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 17:01 |
|
||
|
выбор нужного метода для вызова в контексте генериков
|
|||
|---|---|---|---|
|
#18+
redwhite90Но есть ли способ без .<trololo> явно вызвать нужный метод? Кстати. А попробуй в Java 8, если есть возможность. Там как раз для подобных случаев добавляли более интеллектуальный подбор типов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 17:07 |
|
||
|
выбор нужного метода для вызова в контексте генериков
|
|||
|---|---|---|---|
|
#18+
Blazkowiczredwhite90Но есть ли способ без .<trololo> явно вызвать нужный метод? Кстати. А попробуй в Java 8, если есть возможность. Там как раз для подобных случаев добавляли более интеллектуальный подбор типов. к сожалению возможности нет. А попробую оправдаться почему я так подумал, что то, что стоит слева в выражении A a = func() может повлиять на то какой перегруженный метод вызовется справа; Допустим Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2014, 15:10 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38582528&tid=2127497]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
153ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 401ms |

| 0 / 0 |
