Comments 21
Интересно, хоть я и не junior.
Не хотите скооперироваться с Hexlet?
Не хотите скооперироваться с Hexlet?
0
Я детально не разбирался, но Hexlet — это бесплатное образование?
Мне так показалось.
Мне так показалось.
+1
По большей части да, но у Рахима были планы и о платных курсах.
0
При всем моем уважении к авторам бесплатных курсов, я считаю, что преподавание (подбор материала, чтение лекций, написание статей, составление тестов, ...) должно оплачиваться.
Меценатство — это личный выбор. Сейчас для меня обучение — главный источник дохода.
С удовольствием скооперировался бы с теми, кто строит бизнес.
Меценатство — это личный выбор. Сейчас для меня обучение — главный источник дохода.
С удовольствием скооперировался бы с теми, кто строит бизнес.
0
У аннотаций могут быть атрибуты.
public @interface Version { public int version(); }
Тут следует отметить, что это не совсем обычные поля, а методы типа
version()
— не совсем обычные геттеры, и в определенных условиях могут очень больно бить по производительности.0
Это конечно хорошо, но для тех, кто приступает к изучению языка было бы хорошо дать описание аннотациям, а не сразу с места в карьер :)
+5
Ну хотя бы пару строк про общее понимание аннотаций, введения небольшого не хватает.
+3
Вторая часть будет посвящено рассказу о том, для чего аннотации служат:
1. Влияем на поведение компилятора/JVM (@ Override, @SafeVarargs, ...).
2. Добавляем метаинформацию к классам. Можем считать ее при помощи Reflection API.
Я решил ограничиться разумным объемом, что бы пост было реально написать и вычитать за раз.
1. Влияем на поведение компилятора/JVM (@ Override, @SafeVarargs, ...).
2. Добавляем метаинформацию к классам. Можем считать ее при помощи Reflection API.
Я решил ограничиться разумным объемом, что бы пост было реально написать и вычитать за раз.
+1
Вы выбрали хороший метод для преподнесения информации новичкам, показывая ошибки и ограничения на примере, да еще и с результатом компиляции. Такая подача материала хорошо запоминается и легко читается.
Будет еще здорово, если каждое утверждение будет подкрепляться ссылкой на документацию, ибо «хуниоров нужно приучить MAN-ить с детства».
Будет еще здорово, если каждое утверждение будет подкрепляться ссылкой на документацию, ибо «хуниоров нужно приучить MAN-ить с детства».
+2
Согласен.
Но тут методическая проблема:
1. Это делает написание статьи в 2 раза более длительным по времени. Многие вещи просто «размазаны» по java lang spec. И их поиск и собирание по абзацу — длительная процедура.
2. Спецификации, по моему опыту, склонны читать только около 10%-20% обучаемых.
Если делать серьезный ресурс, то это абсолютно правильное решение. Но непонятна монетизация такого ресурса. Пример: Эккель, Хорстман, Гослинг и прочие Шилдты и то в своих учебниках так не делают.
Но тут методическая проблема:
1. Это делает написание статьи в 2 раза более длительным по времени. Многие вещи просто «размазаны» по java lang spec. И их поиск и собирание по абзацу — длительная процедура.
2. Спецификации, по моему опыту, склонны читать только около 10%-20% обучаемых.
Если делать серьезный ресурс, то это абсолютно правильное решение. Но непонятна монетизация такого ресурса. Пример: Эккель, Хорстман, Гослинг и прочие Шилдты и то в своих учебниках так не делают.
0
Возможен забавный трюк: аннотация — атрибут аннотации
И этот аттрибут может иметь значение по умолчанию. Сэкономлю вам полчаса поисков (спасибо автору блога Todd Fast), для аттрибута-аннотации дефолтное значение выставляется так:
@Target(ElementType.METHOD)
public @interface ReallyComplexAnnotation {
public SimpleAnnotation value() default @SimpleAnnotation(a="..."); // right!
)
+1
О!
Спасибо.
Еще есть интересный вопрос: аннотации не поддерживают рекурсивные структуры данных, т.е. сделать что-то типа односвязного списка или дерева «в лоб» не получится:
Вопрос — как красивее организовать такое?
Скажем генеалогическое древо на классе Person?
Спасибо.
Еще есть интересный вопрос: аннотации не поддерживают рекурсивные структуры данных, т.е. сделать что-то типа односвязного списка или дерева «в лоб» не получится:
@Node {
@Node next();
}
@TreeNode {
@TreeNode left();
@TreeNode right();
}
Вопрос — как красивее организовать такое?
Скажем генеалогическое древо на классе Person?
0
Не хватает примера, хотя бы минимального, с использование аннотаций (не как ими обозначить класс), а как их вытягивать из класса
+1
А продолжение будет?
0
Присоеденяюсь к критике: прочел статью, вроде понял технически, но не понял суть. Наверное все же стоит сначала описать проблему… и только потом давать кучу примеров решения.
+1
Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).
0
Sign up to leave a comment.
Аннотации в Java, часть I