Imagesforyou.ru

IMG FOR YOU — ИНТЕРЬЕРНАЯ ФОТОСТУДИЯ
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Структура данных 101: как использовать связанные списки в Java

Структура данных 101: как использовать связанные списки в Java

как использовать связанные списки в Java

Программирование и разработка

Хорошее понимание структур данных — важный навык, который должен иметь каждый программист в своем наборе инструментов. Не говоря уже о том, что вопросы, связанные со связанными списками, часто встречаются в большинстве собеседований по кодированию.

Эти навыки демонстрируют вашу способность решать неоднозначные проблемы, комплексно мыслить и выявлять закономерности в коде. Структуры данных используются для организации ваших данных и применения алгоритмов к коду. Платформа Java обеспечивает высокопроизводительные реализации различных структур данных и является одним из наиболее часто тестируемых языков программирования для собеседований.

Сегодня мы рассмотрим одну из самых важных структур данных JavaScript — класс Linked List. Мы посмотрим, как это работает, и узнаем, как мы можем использовать его для хранения данных и управления ими.

Хорошее понимание структур данных — важный навык, который должен иметь каждый программист в своем наборе инструментов. Не говоря уже о том, что вопросы, связанные со связанными списками, часто встречаются в большинстве собеседований по кодированию.

Эти навыки демонстрируют вашу способность решать неоднозначные проблемы, комплексно мыслить и выявлять закономерности в коде. Структуры данных используются для организации ваших данных и применения алгоритмов к коду. Платформа Java обеспечивает высокопроизводительные реализации различных структур данных и является одним из наиболее часто тестируемых языков программирования для собеседований.

Сегодня мы рассмотрим одну из самых важных структур данных JavaScript — класс Linked List. Мы посмотрим, как это работает, и узнаем, как мы можем использовать его для хранения данных и управления ими.

Мотивирующие причины освоить Java-разработку

Если вы читаете эту статью, то, скорее всего, уже поняли, что профессия программиста и, в частности, Java-разработчика крайне популярна в IT. Да, Java — один из самых распространённых языков программирования. Решения на основе Java активно применяют в сфере разработки корпоративных систем: в банках, страховых компаниях, финансовых биржах и корпорациях.

Ещё более широкая область применения Java — это разнообразные приложения для Android. Но кроме мобильной разработки она активно применяется и в мире интернета вещей (IoT-разработка). По данным Oracle, Java используется более чем на 15 млрд. устройств! Ещё на Java разрабатывают веб-приложения.

Так что да, основная причина стать Java-разработчиком — это востребованность на рынке труда и высокий уровень зарплат. Входя в эту профессию, без хорошей и интересной работы вы точно не останетесь, причём на любом уровне профессионализма. Эта тенденция сохраняется не первый год и не собирается спадать, скорее наоборот. Однако сначала, конечно, надо «изучить матчасть».

13 идей проектов на Java для оттачивания навыков

Перевод статьи «12+ Java Practice Projects to Improve Your Programming Career Prospects».

Photo by Joshua Reddekopp on Unsplash

Итак, вы приступили к изучению Java и хотели бы ускорить процесс учебы и улучшить свои карьерные перспективы. Чтение книг и просмотр обучающих видео — отличный способ овладеть языком программирования, но такая учеба не будет эффективной без практики. Решение практических задач на Java позволит вам улучшить ваши навыки кодинга и приблизит вас еще на один шаг к работе мечты.

Чтобы сэкономить вам время, мы собрали идеи проектов, подходящих для Java-разработчиков.

Идеи проектов для начинающих

1. Воспроизведите и переделайте на свой вкус какую-нибудь классическую видеоигру

Как только освоите основы Java, можно браться за практику. Например, можно переосмыслить и сделать по-своему какую-то классическую игру.

Разработка игры это непростая задача, но в разделе Games на CodeGym можно найти полезные пошаговые руководства, которые вам помогут. Доступ к этому разделу бесплатный, а материалы разделены по уровням, так что вы сможете выбрать соответствующий вашему текущему уровню навыков.

Эти игры — не мелочевка. Это полнофункциональные проекты, каждый из которых разбит на 20 подзадач. Чтобы создать игру, вам придется решить все эти подзадачи одну за другой. CodeGym поможет вам создать вашу собственную версию «Сапера», «Змейки», «2048», «Гонщика» и других игр. Когда все будет готово, вы сможете поделиться ссылкой на опубликованную игру с вашими товарищами-программистами, чтобы они могли ее оценить и дать вам фидбэк.

Читайте так же:
Госуслуги 29 ru архангельск личный кабинет вход

2. Игра «Крестики-нолики»

Мне не случалось встретить игру проще, чем эта. Причем игра «Крестики-нолики» проста как для игроков, так и для программистов. Чтобы создать собственную версию этой игры, у вас должно быть хорошее понимание базового синтаксиса языка и доступ к рабочему редактору Java. Один из самых простых вариантов создания проекта — взять Java Class и привязать его к GUI или интегрировать прямо в консольное приложение. Код класса состоит из трех разделов, включающих функции панели, условия победы и функции игрока.

3. Система банкомата

Разработайте интерфейс банкомата на Java. Работая над проектом, вы создадите пять классов: для владельца счета, самого счета, транзакции, банка и банкомата.

После ввода идентификатора и пин-кода пользователи должны получить доступ к записям о каждой транзакции, а также получить возможность класть деньги на депозит, снимать средства и делать переводы.

4. Обменник валют

Обменник используется для конвертации валют. Пользователь может ввести сумму в одной валюте и узнать, сколько это будет в другой. Валюту выбирает сам пользователь.

Создавая это приложение, начинающие программисты могут поработать с классами, переменными, алгоритмами, циклами и прочими концепциями Java.

Идеи проектов для программистов среднего уровня

5. Система оценок

Создание системы оценивания поможет вам улучшить ваши навыки программирования на Java.

После получения очков викторин, экзаменов, тестов, заданий по разным предметам система выводит результаты в виде оценок. Важным моментом здесь является то, что пользователи могут добавлять столько предметов, сколько они посчитают нужным.

Вся необходимая информация о студентах, будь то номера или имена, должна иметь собственные поля в интерфейсе, а оценки студентов будут отображаться вместе с относительным рангом в их классах.

Этот проект вы создадите с помощью Netbeans (или другой IDE), при этом будете использовать JTextField, JTextArea, JButtons, JPanels, JLabels, JOPtionPane и другие визуальные компоненты.

6. Умная система для клиники

В условиях пандемии создание программы для больницы как никогда релевантно. Такая программа может помочь медикам определять болезнь, основываясь на симптомах, введенных в систему.

После регистрации врач вводит данные о здоровье пациента, включая личные данные, группу крови и уровень артериального давления, вес, результаты анализов и прочие детали. Получив все эти данные, умная система составляет предварительный отчет о состоянии здоровья пациента.

7. Счетчик слов

Когда вы отрабатываете работу со строками и файлами, проект типа «счетчик слов» — то, что надо.

Начинающие программисты, уже имеющие кое-какой опыт, могут создать интерфейс для написания контента со встроенным функционалом для подсчета слов.

Конечно, простой подсчет слов это скучновато, но ведь никто не запрещает проявить фантазию и сделать все по-своему! Вы вполне можете добавить дополнительный функционал, например, подсчет символов без пробелов.

8. Аптечная система

Следующий проект — аптечная система с простым GUI. Эта система должна позволять пользователю отслеживать информацию об аптеках, а также добавлять и удалять товары.

Идеи продвинутых проектов

9. Приложение для создания почтовых аккаунтов для сотрудников компании

Когда освоите среду разработки Java и познакомитесь с ООП, можно будет двигаться дальше и создавать более продвинутые проекты. Например, приложение для администрирования почтовых ящиков сотрудников компании. Этот проект позволит вам разобраться с методом Math.random, а также отточить свои навыки по части инкапсуляции — одной из фундаментальных идей объектно-ориентированного программирования.

Ваше готовое приложение должно «уметь»:

  • генерировать email-адрес по шаблону фамилия.имя@отдел.компания ,
  • определять отдел,
  • генерировать случайную строку для пароля,
  • иметь способы смены пароля, ограничения вместимости ящика и определения альтернативного почтового адреса,
  • иметь методы для показа имени, адреса и вместимости ящика.

Видео поможет вам разобраться, как все это сделать.

10. Клон «Супербратьев Марио»

Вы играли в «Братьев Марио» в детстве и теперь скучаете по этой игре? У нас хорошие новости! Не так давно Android запустил клон этой игры на базе Java и фреймворка LibGDX.

Читайте так же:
Можно ли носить кроссовки без носков

LibGDX — проект с открытым исходным кодом, который программисты любят использовать при изучении геймдева.

Создавая собственный клон игры, вы получше разберетесь в циклах игры, спрайтах, карте текстур и прочих концепциях. В конечном итоге у вас должна получиться игра, прекрасно работающая на разных платформах, включая Android и iOS.

11. Программа для спортивного менеджмента

Суть этого проекта в разработке интерфейса для управления спортивными мероприятиями и планирования спортивных мероприятий для различных учебных заведений и организаций. Спортивный менеджмент предполагает также контроль за игроками и призами.

Администратор системы имеет право редактировать все данные, а пользователи могут смотреть информацию об игроках и подписываться на интересные для них события. Подписавшись, пользователи должны получать уведомления о предстоящих событиях по электронной почте.

12. Программа для бронирования авиабилетов

Скажем честно: онлайн-решения для бронирования билетов — не то, чем можно кого-то удивить. Но если у вас есть идеи, как сделать процедуру бронирования более эффективной, то почему бы не улучшить систему?

Ваша собственная система бронирования должна позволять пользователям просматривать записи о доступных местах и рейсах, а также совершать онлайн-платежи. И хотя проект, разобранный в видеоруководстве, не предусматривает функционала для обработки платежей и отмены бронирования, вы можете добавить это самостоятельно.

13. Система для управления библиотекой

Этот проект предназначен для оттачивания навыков работы с базами данных. Система управления библиотекой должна автоматизировать задачи, которые все еще выполняются вручную, а также хранить в цифровой базе данных сведения о книгах, их авторах и жанрах.

В такой системе вы можете создать столько функционала, сколько нужно для удобства читателей и библиотекарей. И те, и другие должны без проблем перемещаться по базе данных в поиске книг.

Итоги

Все проекты в нашем списке разбиты по категориям в соответствии с уровнем навыков. Конечно, можно ограничиться проектами для начинающих, но мы не советуем долго топтаться на одном месте. Разработка проектов с возрастающим уровнем сложности позволит вам развить ваши навыки и в итоге устроиться на хорошую работу.

Наследование классов и прототипов JavaScript ES2015 часть 1

После выхода окончательной версии спецификации ECMA Script 2015 ( ES2015 ) сообщество получило возможность двигаться в направлении ее реализации в движках JavaScript .

ES2015 предлагает для существующих функций множество новых полезных возможностей и более чистый синтаксис. Например, ключевое слово class , а также улучшенный синтаксис для JavaScript prototype .

До ES2015 реализация наследования прототипов с помощью JavaScript была запутанной. В традиционной модели классы наследуются от классов. Классы являются не более чем спецификацией или шаблоном, используемым для создания объектов.

Спецификации могут наследовать свойства других спецификаций. Используя унаследованные и собственные свойства, можно создавать новые объекты. В отличие от традиционного наследования, JavaScript не включает в себя поддержку этих спецификаций.

Что такое наследование прототипов JavaScript?

Наследование прототипов в JavaScript предполагает, что один объект наследуется от другого объекта, вместо того, чтобы одна спецификация наследовалась от другой. Даже ключевое слово нового класса является некорректным, потому что подразумевает спецификацию. Но на самом деле один объект наследуется от другого. Синтаксис в более ранних версиях JavaScript был слишком сложным, и ему трудно было следовать. Поэтому, как только разработчики принимают наследование от объекта к объекту, возникает вторая задача. Она состоит в том, чтобы улучшить синтаксис JavaScript prototype наследования — ввести классы ES2015 .

ES2015 классы в JavaScript

Данная спецификация обеспечивает более четкий синтаксис для определения структур классов, создания функций конструктора, расширения классов, вызова конструктора и функций в супер классе, а также предоставляет статические функции. Также ES2015 улучшает синтаксис для создания стиля ES5 получателя / установщика дескриптора свойств, что позволяет разработчикам использовать эти малоизвестные возможности спецификации.

Определения классов

JavaScript не содержит классов. Даже классы ES2015 это не совсем классы в традиционном смысле этого слова. А всего лишь « вычищенный » синтаксис для создания наследования прототипов между объектами. Но поскольку ES2015 использует термин « класс » для объектов, созданных с помощью функции конструктора ( функция-конструктор является конечным результатом ключевого слова class ), в этой статье мы будем использовать термин « класс «, чтобы описать не только классы ES2015 , но и ES5 .

Читайте так же:
Гугл новости главная страница

В версии ES5 и более ранних функции конструктора определяли « классы » следующим образом:

В ES2015 был введен новый синтаксис, с использованием ключевого слова class :

Нажмите здесь, чтобы загрузить код [typeof.js]

Функция конструктора осталась той же, что определена в ES5 . В обернутом блоке ключевого слова class определяются свойства для JavaScript function prototype . Синтаксис ключевого слова new для установки нового экземпляра класса остался неизменным.

С введением ключевого слова class появляется объект функции, который используется ES5 . Рассмотрим следующий выходной результат среды Node.js REPL . Во-первых, мы определяем новый класс, а затем оператор TypeOf перечисляет типы объекта класса:

В ES2015 роль и назначение функции конструктора не пересматривались, для нее просто был « вычищен » синтаксис.

Что такое конструкторы в JavaScript?

Конструктор — это функция, которая выполняется, когда используется оператор new для создания нового экземпляра класса. В функцию конструктора могут быть переданы аргументы для инициализации свойств объекта и выполнения других задач.

В ES5 функция конструктора выглядит следующим образом:

Аналог функции конструктора с синтаксисом ES2015 выглядит следующим образом:

Хотя новый синтаксис стал более объемным, но он является более четким и позволяет проще добавлять наследуемые свойства.

Чтобы установить объект с тем же синтаксисом, код должен быть тот же:

Нажмите здесь, чтобы загрузить код [constructors.js]

Расширение классов

До ES2015 большинство разработчиков не понимали, как реализовать наследования между объектами и использовать JavaScript prototype . Пообщавшись с разработчиками на C ++ , Java или C # , вы поймете, с какой легкостью они настраивают наследование одного класса от другого, а затем создают экземпляр объекта из подкласса. Попросите JavaScript разработчика продемонстрировать, как происходит наследование между двумя объектами, и в ответ вы увидите пустой взгляд.

Настройка наследования прототипов является непростым делом, а понятие наследования прототипа является неизвестным для большинства JavaScript разработчиков. Вот несколько примеров кода с комментариями, которые поясняют процесс настройки наследования:

Нажмите здесь, чтобы загрузить код [es5_inheritance.js]

Приведенный выше код трудно разобрать, и на то, чтобы установить наследование одного объекта от другого, поддерживая при этом функции конструктора, уходит много времени. Большинство JavaScript разработчиков не могут создать этот код по памяти, а многие вообще никогда не видели ничего подобного при работе с JavaScript .

Чтобы решить эту проблему, в новом синтаксисе структуры классов в ES2015 было введено ключевое слово extends . В следующем коде продемонстрировано то же наследование, что и в первом примере кода, но с использованием синтаксиса ES2015 для JavaScript object prototype :

Нажмите здесь, чтобы загрузить код [es6_inheritance.js]

Очевидно, что второй подход более прост для понимания. Оба кода воспроизводят одинаковую структуру объекта. Таким образом, новый синтаксис улучшает код наследования, но не меняет результат.

Другой способ изучить, как это работает — рассмотреть код наследования ES5 , сгенерированный TypeScript . TypeScript – это препроцессорный язык, который оптимизирует JavaScript через строгую типизацию и транспиллинг кода ES2015 в код ES5 . Транспилинг — это процесс компиляции исходного кода одного языка программирования в исходный код другого языка.

Функция _extends в JavaScript

Для поддержки наследования классов ES2015 TypeScript транспилирует функционал ключевого слова extends в функцию с именем __extends , которая запускает код, необходимый для настройки наследования. Вот код функции __extends :

Приведенный выше код немного труден, поэтому ниже приводится его расширенная, задокументированная версия. Чтобы понять назначение каждой строки кода, прочтите комментарии, добавленные в исходный код JavaScript prototype . Функция __extends работает с любой парой родительских и дочерних объектов:

Остальное содержимое блока — это реализация функции __extends . Она использует как шаблон примеси и JavaScript prototype наследование, чтобы построить взаимосвязь наследования между родительским и дочерним объектами. Шаблон примеси копирует свойства из одного объекта в другой. Приведенный ниже код обрабатывается через функцию __extends :

Читайте так же:
Можно ли накрывать батареи отопления

Следующие две строки кода сбивают с толку многих разработчиков:

Можно подумать, что вместо этого код должен быть составлен следующим образом:

Разработчики ошибочно полагают, что дочерний объект теперь будет наследоваться от объекта прототипа родительской функции конструктора. Но на самом деле объекты, созданные с помощью родительской функции конструктора, а также объекты, созданные с помощью дочерней функции конструктора, наследуются от точно такого же JavaScript object prototype . Это нежелательно, так как свойство прототипа дочерней функции конструктора не может быть изменено без одновременного изменения свойства прототипа родительской функции конструктора. Поэтому все изменения, внесенные в дочерний объект, будут также применены к родителю. Это некорректное наследование:

Функция _extends в JavaScript

При создании нового экземпляра объекта с помощью оператора new и родительской или дочерней функции конструктора, полученные объекты будут наследоваться от того же объекта-прототипа ( РРО ). Установленные родительские и дочерние объекты являются объектами одного уровня с РРО в качестве родителя. Дочерний объект не наследуется от родителя.

Таким образом, целью данного кода является установить следующую структуру наследования:

Функция _extends в JavaScript - 2

С помощью этой новой структуры новые дочерние объекты наследуются от CPO ( объект прототипа потомков ), который наследуется от РРО . Новые свойства могут быть добавлены в CPO , который не влияет на РРО . Новые родительские объекты наследуются от РРО , и не зависят от изменений в СРО . Изменения в РРО будут унаследованы объектом, созданным как с помощью родительской, так и с помощью дочерней функций конструктора. С помощью этой новой структуры дочерние объекты наследуются от родителя.

И в конце закрывающая фигурная скобка относится к изначальному блоку if :

Нажмите здесь, чтобы загрузить код [ts_extends.js]

Синтаксис ES2015 для расширения классов гораздо более прост для понимания JavaScript prototype . Он содержит два новых ключевых слов: extends и super . Ключевое слово extends устанавливает отношения наследования прототипа между родительскими и дочерними классами. Ключевое слово super вызывает конструктор для класса родителя ( он же суперкласс ). Вызов функции super требуется, даже если родительский объект не содержит конфигурацию.

Вызов супер конструктора это то, что создало этот новый объект, который будет использоваться в дочернем классе ( он же подкласс ):

Нажмите здесь, чтобы загрузить код [extends.js]

Объекты JavaScript позволяют только одиночное наследование, и не имеют встроенной поддержки интерфейсов ( TypeScript предоставляет интерфейсы ).

Классы ES2015 значительно улучшают синтаксис для определения свойств наследования объектов, свойств получателя / установщика. Хотя классы ES2015 не меняют характер наследования прототипа, они делает JavaScript prototype более доступным для JavaScript разработчиков.

Дайте знать, что вы думаете по данной теме материала в комментариях. Мы очень благодарим вас за ваши комментарии, подписки, лайки, отклики, дизлайки!

Языки программирования

Объявление метода с таким же именем как у класса называется конструктором. Конструктор выполняется при создании объекта из класса.

Процесс создания объектов из классов называется инстанцированием. Объект — это экземпляр класса. Объект — это конкретный экземпляр той абстракции, которую представляет собой класс.

При создании объекта возвращается ссылочное значение (reference value). Ссылочное значение отсылает к объекту. Переменная метит место в памяти, куда может быть сохранено значение. Ссылка на объект (object reference) это переменная, которая хранит ссылочное значение. В Java объектами можно манипулировать только посредством их ссылочных значений или, что то же самое, посредством ссылок, которые содержат ссылочные значения.

Несколько ссылок могут ссылаться на один и тот же объект, т.е. они хранят ссылочное значение одного и того же объекта. Такие ссылки называются псевдонимами. Объектом можно управлять через любой из его псевдонимов.

Когда на объект больше нет ссылок, то его память при необходимости забирается и перераспределяется для других объектов. Этот процесс называется автоматическая сборка мусора. В Java эту заботу берет на себя среда исполнения.

Каждый созданный объект имеет свою копию полей определенных в классе. Поля объекта называются переменными экземпляра (instance variables). Значения переменных экземпляра конституциируют состояние объекта (state). Два разных объекта могут иметь одно и то же состояние, если их переменные экземпляра имеют одни и те же значения. Методы объекта определяющие его поведение называются методами экземпляра (instance methods). Эти методы принадлежат каждому объекту класса. Имплементация этих методов находится в общем использовании у всех объектов класса. Переменные и методы экземпляра, которые принадлежат объектам называются общим термином члены экземпляра (instance members).

Читайте так же:
Как восстановить жесткий диск после падения

В некоторых случаях члены должны принадлежать только классу, т.е. они не должны быть частью ни одного из экземпляров класса. Члены, которые принадлежат только классу называются статическими членами (static members). Поля объявленные с ключевым словом static называются статическими переменными (static variable). Статическая переменная инициализируется при загрузке класса в среду исполнения. Также существуют статические методы (static methods), которые принадлежат скорее к классу, чем к объектам этого класса.

Объекты взаимодействуют друг с другом через передачу сообщений. В Java это делается вызовом метода у объекта посредством бинарного оператора точки. Вызов метода содержит: получателя сообщения, метод для запуска, аргументы метода. Метод запускаемый у получателя может вернуть информацию отправителю посредством одиночного возвращаемого значения. Вызываемый метод должен быть определен для объекта, иначе будет ошибка компиляции.

Dot (.) нотация может использоваться вместе с ссылкой для доступа к полям объекта. При использовании dot нотации учитывается доступность (accessibility) члена. Члены в классе имеющие уровень доступности private не доступны извне класса.

  • Члены экземпляра: переменные и методы экземпляра. Они могут быть доступны или запущены только через ссылку на объект.
  • Переменная экземпляра — это поле аллоцированное при инстанцировании класса (т.е. при создании экземпляра класса). Также называется non-static полем или просто полем, когда контекст очевиден.
  • Метод экземпляра. Объекты одного класса разделяют между собой имплементацию методов принадлежащих к экземпляру класса.
  • Статические члены: статические переменные и методы класса. Они могут быть доступны и запущены посредством имени класса или ссылки на объект.
  • Статическая переменная — это поле аллоцированное при загрузке класса. Оно принадлежит классу и не принадлежит ни одному из объектов класса. Также называется статическим полем или переменной класса.
  • Статический метод — принадлежит классу и не принадлежит ни одному из объектов класса. Также называется методом класса.

Ассоциации: агрегация и композиция

Базовые элементы декларации класса

Классификация членов класса CharStack:

Члены класса

Инстанцирование

Каждый созданный объект имеет свою копию полей определенных в классе объекта. Два объекта стека, на которые ссылаются stack1 и stack2, будут иметь собственные поля stackArray и topOfStack.

Запуск методов

Статические члены класса

Клиент может получать доступ к статическим членам класса используя имя класса.

Также статические члены могут быть доступны из ссылок на объекты, но это считается плохим стилем.

Для сравнения, члены экземпляра могут быть доступны только по ссылкам на объекты.

Цепочки наследования

Также возможно наследование от класса, который сам является производным от другого класса. В этом нет ничего примечательного или особенного – всё происходит, как в примерах выше.

Например, давайте напишем класс руководителя, Supervisor . Руководитель ( Supervisor ) является сотрудником ( Employee ), который является человеком ( Person ). Мы уже написали класс Employee , поэтому давайте использовать его в качестве базового класса для наследования Supervisor :

Теперь наша диаграмма наследования выглядит так:

Рисунок 5 Диаграмма наследования Рисунок 5 – Диаграмма наследования

Все объекты Supervisor наследуют функции и переменные как от Employee , так и от Person , и добавляют свою собственную переменную-член m_overseesIDs .

Создавая такие цепочки наследования, мы можем создать набор пригодных для повторного использования классов, которые являются очень обобщенными (вверху) и постепенно становятся более конкретными на каждом уровне наследования.

Проверка работы

Чтобы проверить работу нашей аннотации, создадим новый проект, в который добавим нашу библиотеку в виде зависимости.

Создадим там класс TestEntity , которую пометим нашей аннотацией.

Теперь запускаем ребилд проекта: “Build” -> “Rebuild Project”.

Заходим в папку target/generated-sources/annotations . И видим там наш сгенерированный класс:

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector