![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: нет Всего: 15 |
Я начну издалека, а потому надеюсь на ваше терпение...
В java есть JUnit - средство для unit-тестирования (кто не знает, что это такое, не обращайте внимания, в данном случае это не важно). Там есть несколько классов. Некоторое время назад кто-то из участников проекта freepascal "перевел" Junit на паскаль и назвал это fpcunit. Но это было давно и fpcunit представляет собой клон какой-то сильно устаревшей версии JUnit. О JUnit я узнал от жены, которая работает тестировщиком и unit-тестированием тоже занимается. Она даже когда-то давно немного изучала java. Посмотрев на fpcunit, она сказала, что он скопирован с устаревшей версии JUnit и что она может мне помочь с переводом на fpc, только проблема оказалась в том, что в новых версиях JUnit вовсю используются аннотации, а в паскале такого просто нет. Она целый час мне объясняла, что такое аннотации, но я не понял абсолютно ничего. Либо она не так объясняла, либо я совсем тупой стал на старости лет. В гугле меня конечно не забанили, но все примеры использования аннотаций для объяснения используют код на java (кто бы мог подумать...), а я в java ни в зуб ногой и уже со второй строчки я перестаю понимать, что там происходит. Поэтому вопрос - может кто-нибудь на пальцах объяснить непосвященному, что это такое и как работает? Например, "вот такую-то задачу с помощью аннотациq можно решить так, а без них - только так, а вот такую вообще никак". А я уж потом как-нибудь соображу, как это лучше в fpc освоить. -------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
А что не устраивает в существующей версии? может использовать ее и не париться? Просто если язык не поддерживает метаинформацию, то повторить будет не так просто. Если говорить в простоте, аннотация это метаинформация проставляемая на объектах языка (классах, полях, методах) которая может быть считана другим классом или инструментом. Например, в старых версиях JUnit методы тестового класса должны были нахываться testXXX, чтобы JUnit знал что запускать. Сейчас метод может называться как угодно, достаточно пометить его аннотацией @Test и по ней JUnit определит, что это тестовый метод.
Добавлено через 7 минут и 22 секунды насколько я знаю в Delphi 2010 появились кастомные аттрибуты. Это аналог аннотаций в Java. Если fpc поддерживает этот диалект object pascal, то все есть из коробки. -------------------- ![]() |
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: нет Всего: 15 |
Про custom attributes почитал, спасибо за наводку. Теперь пойду разбираться, что из этого есть в fpc.
В текущей версии все устраивает. Попробую разобраться, что появилось нового - ведь если оно появляется, значит, кому-нибудь нужно. А значит, и мне тоже может пригодиться. -------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Аннотации в Java бывают 3-х retention-ов: существую только на уровне исходников, на уровне классов и обрабатываются на уровне JVM, на уровне классов и доступны всем. Так вот аннотации на уровне исходников это аналог директив компилятора
Хотя в JUnit используется другие типы. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Samotnik |
|
||||||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
Аннотации представляют собой метаданные, которые могут добавлятся в исходный код программы и только косвенно влияют на нее, но могут использоваться в процессе анализа кода, компиляции и во время выполнения.
Вот основные варианты использования аннтоаций: * предоставлять необходимую информацию для компилятора; * предоставлять метаданные различным инструментам для генерации кода, конфигураций и т.д.; * использоваться в коде во время выполнения програмного кода (reflection). Аннотации могут быть применены, например, к декларациям классов, полей, методов. RockClimber, вобщем, если по-простому. Это метаданные, которые используются во время генерации кода, выполнения, компиляции. Проще обьяснить, имхо нельзя.
такого не бывает как пример.
и
Вот два куска неизвестного кода на неизвестном языке )))) Суть : в первом - просто описание какой-то функции, которая что-то делает с переменными. Во втором случае она же, только перед ней странное слово с собачкой - @Deprecated Это слово говорит разработчику о том, что эта функция Deprecated - устаревшая, и ее лучше не использовать, т.к. есть аналог ей, но работает лучше как-то так. Это сообщение отредактировал(а) Samotnik - 11.12.2009, 19:41 |
||||||
|
|||||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |