Подписаться на:
Комментарии к сообщению (Atom)
Спутник взлетает. Первая ступень отработала.
И, кажется, неплохо: Посмотрим, что будет когда отработает вторая.
-
Арт-группа «Явь» нарисовала на одной из стен петербургских зданий граффити со Стивеном Хокингом : Неизвестно только где.
-
И немного аналитики в тему, хоть и не праздничной: Речь Президента перед Советом Федерации 1 марта 2018 года, которую одновременно называ...
О которых ВЫ не знали. Есть один новый прикол, но, в остальном, перепевки Блоха, показывающие, что автор его не читал.
ОтветитьУдалить1. Заголовок про Java, а пример про JVM
2. По сути тоже про JVM
3. Чуть ли не с момента создания Java
4. Тоже давно известно
5. Вроде у Блоха видел, мелочь
6. Ничего нового - reflection опасная штука
7. Тоже испокон веков, как и 3
8. С какого он называет generics алиасами к типам?
9. Путает generics и templates из C++
10. А вот про & для типов я раньше не слышал
Раз есть пункт 10, значит, ВЫ тоже не знали :)
УдалитьА вот про пункт 9 можешь подробнее? С какого боку тут C++?
Насчёт, кстати, "ничего нового". Означает ли это, что всего это помнишь и знаешь на кончиках пальцев, когда пишешь? Спроси многих джавистов про п.6 - услышишь, я думаю, интересное.
УдалитьЧто можно интересного услышать про закешированные в JDK обёртки примитивных типов? То, что часть уникальны, а часть - нет? Ну было так сделано для быстродействия при минимизации памяти. То, что с помощью reflection без установленного SecurityManager можно всё сломать? Ну это и ежу понятно.
УдалитьНу не на кончиках пальцев, но на минутку призадуматься заставил только п.4, так как обёртки примитивных типов для вычислений используются чрезвычайно редко. А ведь для них сделаны конвертации, как и для обычных примитивных типов. Если в примере заменить обёртки на другие классы, то код просто не скомпилируется.
УдалитьПро п.9 я может что и напутал насчёт templates, но generics в Java не доступны в runtime, кроме как через декларации классов и методов. Обратная совместимость тому виной...
Удалитьhttp://malenkov.blogspot.ru/2008/03/java-puzzle-78-reflection-infection.html
УдалитьДа и вообще все puzzlers можешь посмотреть...
А теперь, дядька СЭМ, перечитай свои ответы и попробуй прикинуть, какое количество программирующего народа, когда пишет код, знает обо всём этом. Так что, насчёт "ежу понятно" - так это понятно уже постфактум, под отладчиком. И хорошо, если на тестировании, а не у конечного пользователя нашлось.
УдалитьМне-то что, я на Java на пишу, и JLS и вот это всё меня не сильно касается.
Ну, у меня опыт большой, за других - не скажу. Хотя всегда и всем говорю, что Блоха надо прочитать от и до, благо язык у него не очень сложный и примеры понятные.
УдалитьДля ежей, как говорится, чёрным по белому написано:
Reflection is powerful, but should not be used indiscriminately. This is a relatively advanced feature and should be used only by developers who have a strong grasp of the fundamentals of the language.
http://docs.oracle.com/javase/tutorial/reflect/
А теперь берем твою цитату (Reflection is powerful, but should not be used indiscriminately. This is a relatively advanced feature and should be used only by developers who have a strong grasp of the fundamentals of the language.) и пытаемся замапить на пример с хабра. Что получаем?
УдалитьТут я не понял, что ты хочешь сказать.
УдалитьВсё просто: во первых, не все код пишущие способны мотивированно объяснить (а ещё лучше, доказать) смысл используемых языковых конструкций ("не знал, что говорил прозой"), а во вторых многие просто не знают.
УдалитьДля меня безусловная полезность такого рода статей - в самопроверке. Смогу ли сразу, без размышления, определить проблему в гладком на первый взгляд коде; и смогу ли сам всегда писать правильно.
С этой стороны статья полезная, но с другой точки зрения она показывает, что автор что-то где-то слышал, но есть ещё 100 вещей о Java, которые он не знает - puzzlers.
Удалить