|
|
|
Что мешает компилятору выполнять сначала Widening, а затем Boxing перед вызовом метода ?
|
|||
|---|---|---|---|
|
#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. Код: plaintext Если же закомментарить методы static void go(Number z) и static void go(Object z), то лезет ошибка компиляции Код: plaintext 1. 2. 3. 4. Вопрос . Что здесь мешает компилятору "добить слева нулями" значение переменной `k` до разрядности short и далее упаковать в Short-объект ? (т.е. чтобы каст не делать). ЗЫ. Только что перечитал Ководство на эту тему, страницы 290-291 (252-253 "по бумаге"): там разобран пример, НЕ объясняющий по сути ничего. А фраза: SCJP guide, pg. 291Why didn't the compiler try to use the box-then-widen logic when it tried to deal with the WidenAndBox class? Think about it…if it tried to box first, the byte would have been converted to a Byte. Now we're back to trying to widen a Byte to a Long, and of course, the IS-A test fails. - я вообще не понял, к чему относится %-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2013, 16:08:55 |
|
||
|
Что мешает компилятору выполнять сначала Widening, а затем Boxing перед вызовом метода ?
|
|||
|---|---|---|---|
|
#18+
JLS говорит что так нельзя. Почему JLS так говорит - хз. То ли обратная совместимость. То ли просто логика такая, что результат боксинга должен анбокситься в тот же тип... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2013, 16:25:32 |
|
||
|
Что мешает компилятору выполнять сначала Widening, а затем Boxing перед вызовом метода ?
|
|||
|---|---|---|---|
|
#18+
Вот тут ещё ответ со ссылкой на ту же OCJP книгу http://stackoverflow.com/a/13320720 Который говорит, что если бы компилер делал widening и boxing, то это сломало бы обратную совместимость. Т.е. код из Java 1.4 стал бы линковаться на другие методы в Java 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2013, 16:35:22 |
|
||
|
Что мешает компилятору выполнять сначала Widening, а затем Boxing перед вызовом метода ?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВот тут ещё ответ со ссылкой на ту же OCJP книгу http://stackoverflow.com/a/13320720 Который говорит, что если бы компилер делал widening и boxing, то это сломало бы обратную совместимость. Т.е. код из Java 1.4 стал бы линковаться на другие методы в Java 5.Ага, вот оно что... Ясно. Большое спасибо, в который раз выручаете! :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2013, 16:44:52 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=206&tid=2128458]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
93ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 222ms |
| total: | 412ms |

| 0 / 0 |
