Я в упор не понимаю, почему эту базу пытаются прятать.
1) она уже слита. Кому были нужны пароли — уже их знают
2) первое, что хочет сделать любой человек, узнавший о новости — проверить на наличие своего пароля, а доверять ресурсам — «введите пароль — мы скажем, насколько он надежен» будут либо идиоты, которые не понимают, к чему это может привести, либо, наоборот, достаточно образованные люди, способные проанализировать сервис и оценить степень риска. Я вот себя как-то ни к тем, ни к другим не отношу.
Слава богу, «все, что единожды попадается в сеть — гуглится». Подсказка для любопытных — названия сервисов и torrent, который, безусловно, удалили с tpb, но ищется он влет.
Но это не мешает им быть всегда под рукой. Часы нас сегодня окружают повсюду: в машине на компьютере, на планшете, на мобильном. Только совсем ленивый может задаваться вопросом «который час». В каком-то смысле мы весь день на «часы» смотрим;)
Посмею с вами не согласиться=) Как раз насчет PvsZ2. Игра стала действительно сложной. И от этого — убийственно интересной и нервной. Когда уровень проходишь с третьего или больше раза — от этого получаешь удовольствие. суперспособностями не хочется пользоваться не потому, что они платные (на самом деле, там хватает и бесплатных фишек), а потому что так неинтересно. Но про непроходимость игры без вложений — это враки. /* сорри за оффтоп */
А если серьезно, то тут речь шла о вполне конкретной области — IT. И да, все настоящие мастера своего дела, которых я знаю, не убиваются на работе. А среди регулярно сидящих до ночи девелоперов большинство — просто неправильно оценивают свои возможности / недостаточно хороши…
Разумеется, речь не идет о «дедлайн вчера» (что, кстати, тоже следствие непрофессионализма). А о ежедневных реалиях.
Все-таки это не имеет отношения к стиранию типа (хоть я и солидарен с Эккелем=))
Пример не скомпилируется не только в джаве, но и в любом другом языке. Дженерик — это обобщение (см. словарь) — это по определению «нечто, работающее с 'произвольным' типом». И крутизна как раз в том, что произвольный тип — это не обязательно Object.
Грубо говоря, вместо дженериков можно работать с Object'ами (в рантайме так и есть), но тогда компилятор и не будет проводить дополнительных проверок.
В вашем примере someObj — с точки зрения Controller \<T\> — объект некоего, заранее неизвестного, класса T. Причем Т — произвольно, никаких ограничений.
То, что Вы неявно просите — это чтобы каждое использование дженерика — в данном случае Controller\<SomeObject\> — накладывало ограничения на дженерик.
В частности, кто-то другой может написать
Controller<Object> controller = new Controller<Object>(new Object());
А много вы знаете вопросов, которые показывают навык программиста?
Понять, на что способен человек можно
а) по коду, который он пишет
б) по разговору
И вот этот конкретный случай лично я считаю прекрасным поводом для разговора на джуниора-мидла
Ex.:
1) поговорили про дженерики и коллекции
2) А какие вы знаете еще примеры дженериков? Если отвечает — прекрасно
3) если задумался — подкидываем удочку: а как насчет Class? Если уверенно отвечает, то фиг с ним, не судьба
4) Если удивился — стимулируем подумать: «А как Вы думаете, зачем?» Намекаем на возвращаемый аргумент метода, просим написать метод, возвращающий произвольный тип
5) Ну и наконец — а что по-вашему должен возвращать getClass? А как это написать? Ну и говорим, что это особенный метод
Я вообще считаю, что добиться на собеседовании, чтобы кандидат рассуждал на тему того, чего не знает — это как раз и есть один из способов оценить навык программиста и опыт. Конкретные вопросы — это скучно. Они быстро устраревают и отлично гуглятся (хотя я бы не сказал, что умение подготовиться — это плохо;), но это другая история)
Вообще, про getClass я узнал ровно два года назад, т.ч. возможно это действительно прыжок со скалы;) Тем не менее многие мои знакомые удивлялись, что сигнатура в Object.java != реально проверяемая компилятором сигнатура. Возможно, привычка стараться все объяснять максимально подробно и угробила «короткий забавный факт», превратив его в пост-мини-шпаргалку-для-новичков. Буду учиться на ошибках, спасибо.
Вы совершенно правы, я облажался. Такое не скомпилируется. Суть в том, что class — это совсем не статическое поле и даже не пытается им казаться. вызывать class у объекта нельзя. Поправил в посте, премного благодарен.
На самом деле, изначально я хотел написать только о сигнатуре в Object.java, про невозможность описать требуемое синтаксисом джавы, но все остальное — потребовалось для полноты картины.
1) она уже слита. Кому были нужны пароли — уже их знают
2) первое, что хочет сделать любой человек, узнавший о новости — проверить на наличие своего пароля, а доверять ресурсам — «введите пароль — мы скажем, насколько он надежен» будут либо идиоты, которые не понимают, к чему это может привести, либо, наоборот, достаточно образованные люди, способные проанализировать сервис и оценить степень риска. Я вот себя как-то ни к тем, ни к другим не отношу.
Слава богу, «все, что единожды попадается в сеть — гуглится». Подсказка для любопытных — названия сервисов и torrent, который, безусловно, удалили с tpb, но ищется он влет.
Разумеется, речь не идет о «дедлайн вчера» (что, кстати, тоже следствие непрофессионализма). А о ежедневных реалиях.
Ну а СССР, уж простите, ну совсем не в тему.
Пример не скомпилируется не только в джаве, но и в любом другом языке. Дженерик — это обобщение (см. словарь) — это по определению «нечто, работающее с 'произвольным' типом». И крутизна как раз в том, что произвольный тип — это не обязательно Object.
Грубо говоря, вместо дженериков можно работать с Object'ами (в рантайме так и есть), но тогда компилятор и не будет проводить дополнительных проверок.
В вашем примере someObj — с точки зрения Controller \<T\> — объект некоего, заранее неизвестного, класса T. Причем Т — произвольно, никаких ограничений.
То, что Вы неявно просите — это чтобы каждое использование дженерика — в данном случае Controller\<SomeObject\> — накладывало ограничения на дженерик.
В частности, кто-то другой может написать
Вот откапитанил, так откапитанил;)
Понять, на что способен человек можно
а) по коду, который он пишет
б) по разговору
И вот этот конкретный случай лично я считаю прекрасным поводом для разговора на джуниора-мидла
Ex.:
1) поговорили про дженерики и коллекции
2) А какие вы знаете еще примеры дженериков? Если отвечает — прекрасно
3) если задумался — подкидываем удочку: а как насчет Class? Если уверенно отвечает, то фиг с ним, не судьба
4) Если удивился — стимулируем подумать: «А как Вы думаете, зачем?» Намекаем на возвращаемый аргумент метода, просим написать метод, возвращающий произвольный тип
5) Ну и наконец — а что по-вашему должен возвращать getClass? А как это написать? Ну и говорим, что это особенный метод
Я вообще считаю, что добиться на собеседовании, чтобы кандидат рассуждал на тему того, чего не знает — это как раз и есть один из способов оценить навык программиста и опыт. Конкретные вопросы — это скучно. Они быстро устраревают и отлично гуглятся (хотя я бы не сказал, что умение подготовиться — это плохо;), но это другая история)
, а на самом деле там не совсем такой дженерик?