JavaRush /Курсы /Java Collections /Задачи | 3 уровень | 8 лекция

Задачи | 3 уровень | 8 лекция

Java Collections
3 уровень , 8 лекция
Открыта
8
Задача
Java Collections, 3 уровень, 8 лекция
Недоступна
Первая сериализация в XML
Расставь правильно JAXB аннотации у статических классов.
8
Задача
Java Collections, 3 уровень, 8 лекция
Недоступна
Десериализация XML объекта
В метод convertFromXmlToNormal первым параметром приходит строка, содержащая xml объект. Вторым параметром приходит класс, объект которого необходимо вернуть. Метод convertFromXmlToNormal должен создать объект из xml-строки и вернуть его.
Комментарии (89)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Глеб Уровень 51
8 марта 2025
Вопрос решил с помощью одного из комментов. Мне помог данный вариант: File - Project Structure - Project Settings - Libraries -> + -> From Maven... в строку поиска ввести jaxb-impl и выбрать версию sun.xml.bind.jaxb.impl 2.3.4 -> ОК -> Apply.
Andrey Уровень 34
30 апреля 2025
Для потомков добавлю, что под реализацию на javarush подойдут только версии sun.xml.bind.jaxb.impl 2.3.х Не 3.х.х и не 4.х.х, а именно 2.3.х краткая история вопроса MKyoung ps Сайт в закладочки
Denis Odesskiy Уровень 46
6 октября 2024
Блин, учитесь пользоваться мавеном. Ну как-так столько вопросов. Он же наоборот для удобства создан, очень удобная и простая штука. Без него никуда и не только в джаве, подобные инструменты знать мастхэв надо. Вот избаловались мы джависы, в питоне там сразу почти всё через PIP...😄 Я например немного посидел, поизучал сначала как в ручную библиотеки подключать, где скачать jar. Потом когда разобрался с этим, перешел к Maven. Разберитесь с его репозиторием библиотек, разберитесь как устроен pom.xml, как там подключать зависимости. Когда поймете как это работает (а работает оно элементарно), переходите к функционалу IDE который очень упрощает жизнь, там в IntelejIDEA сразу можно выполнит поиск либы и заинжектить ее в проект... Что тут многие люди подробно расписывали и показывали как. Но сначала разберитесь как это ручками настроить (зависимости) и вопросов больше не будет! Да еще, иногда в рамках одного фреймворка необходимо инжектить несколько его частей(библиотек). Желательно чтобы они были одной версии, иначе возможны ошибки и проблемы (ну это так наблюдение из жизни). Вот представьте, запилите вы завтра свой крутой проект на java и решите им поделиться с общественностью, выложив его в свой репозиторий, например на гитхаб. А у него 20 сторонних либ подключено. И что? Будете все jar этих либ закачивать на гитхаб? Или заставлять пользователя искать их самим, скачивать подключать?... Я думаю нет. Проще ведь загрузить pom.xml с прописанными зависимостями и он автоматически подтянет в проект всё это...
Mikhail Tabakaev Уровень 31
30 октября 2024
так и есть! в питоне насколько я помню тоже что-то подобное есть) вроде как поетри называется, но это, как говориться, не точно) сейчас же все развивается и в том числе в пайтоне есть инструменты, которые позволяют фактически "превращать" его из ЯП с динамической в ЯП в практически строгой типизацией (исходя из типа данных ожидаемых на вход методам и функциям) и т.д. Та же Джава исходно ООП язык постепенно прирастает функциональщиной. все развивается, обрастает новыми технологиями и т.д. но базовые базы лучше знать чем не знать ...
Denis Odesskiy Уровень 46
30 октября 2024
Ну да согласен! В пайтоне есть такая штука, если вы ее имели ввиду:

def recurse(n: int) -> int:
    if n <= 1:
        return
    for i in range(2, n + 1):
        if n % i == 0:
            print(i, end=' ')
            recurse(int(n / i))
            break


recurse(132)
т.е тут в параметрах функции мы после ":" указываем тип ожидаемого аргумента, а тот тип что функция должна вернуть указываем после "->". Тут у меня и там и там тип "int". Однако заметьте, это не то же самое что в java строгая статическая типизация, это просто рекомендация, некая справочная информация разработчику что там должно в функцию приходить и уходить. Но вы можете все равно написать там что хотите, например вещественное число, ошибки не будет и вас об этом никак не предупредят не на этапе написания кода, не на этапе его выполнения. А вот Java тут же подчеркнет. Да в java есть лямбды (как по мне удобнее чем в пайтоне), правда это дело вкуса, ссылки на методы/конструкторы, стримы... В пайтоне же очень сильные функции, и послабее ООП чем в java, есть сложности с инкапсуляцией в частности там. А вообще оба языка классные и гибкие, очень мощные, каждый по-своему. Ну а так Java более масштабен и фундаментален по ряду причин.
Mikhail Tabakaev Уровень 31
31 октября 2024
По поводу проблем с инкапсуляцией в питоне - согласен. Спасибо за наглядный пример! На мой взгляд, несколько больнее будет в Пайтоне в том случае, когда в сигнатуре метода (функции) ожидается буллево значение, а прилетает туда что угодно, начиная от целого числа, и, заканчивая строкой (вроде как со строками и списками эту проблему исправили...). Как Вы помните в Пайтоне: bool(1) == 1 True bool(0) == 0 True Т.е. по факту вся логика кода может отработать без ошибок (код - валиден с формальной точки зрения), но результат его выполнения будет не корректен в целом. И такие ошибки в дальнейшем сложно будет выявлять и исправлять. Поэтому по факту каждый параметр в Пайтоне следует проверять на принадлежность даже не к типу (isinstance() - привет ув. Барбаре Лискофф), a на принадлежность к конкретному классу (if type(a) == bool: ...). Но я говорил о конкретном (-ых) инструменте, реализованном для Пайтона, который позволяет избежать эти проверки для каждого параметра метода (функции): библиотеки (модули) dataclasses, inspect Или как вариант написать свои датаклассы с авторской логикой проверки на подаваемый тип (класс) данных. Либо же проверки на типы данных реализовать в сеттерах, а поля с сеттерами определить как properties (для них автоматом отрабатывают сеттеры и геттеры при обращении к объекту класса, и даже его создании)... P.S. Автоматическое приведение в питоне 1 к True, а 0 к False и обратно исправлять (?) навряд ли будут, т.к. это приведет к потере возможности писать элегантный код, - одной из фишек Питона, к слову сказать. Например: <some code> answer = ["no", "yes"] print(answer[some_digit < 0]) <some code>
Alex Уровень 48
7 июня 2024
Добавьте через maven зависимость org.glassfish.jaxb:jaxb-runtime:2.3.2, версии выше не всегда работают. У меня на jbr-17 эта версия заработала. Более новые версии у себя я удалял из lib, иначе не работало.
ElenaN Уровень 37
21 декабря 2023
Ой, ну с каждой лекцией все интереснее и интереснее, слова, которые раньше приводили в ужас (Marshaller, JSON, JAXBcontext и т.д) теперь смело отправятся в мое CV🤓но не все
very junior java developer Уровень 51
22 сентября 2023
Viter Уровень 38
13 декабря 2023
А какие нужные то в данном случае?
Vitaly Demchenko Уровень 1
17 января 2024
Судя по всему, все по-разному выходят из этой ситуации. В моем случае работает так. File - Project Structure - Project Settings - Libraries -> + -> From Maven... в строку поиска ввести jaxb.impl и выбрать версию 2.3.4 -> ОК -> Apply.
Ra Уровень 5 Student
21 июля 2023
В 2023 году лучше поставить jdk 8 и назначить временно её для проекта. Ничего ставить не надо будет
Нейросеть Уровень 41
12 декабря 2022
Все чего то устанавливают, парятся.. Я один что ли на java 8 сижу?!
2 марта 2024
да)
апецт Уровень 50
10 октября 2022
юхуу, 2 часа парился с установкой JAXB, чтобы решить две максимально легкие задачи
Станислав Future Уровень 39
19 августа 2022
Стэк навыков пополнился на Jackson, JAXB. Из десятков ранее непонятных слов и наборов букв некоторые начинают уже становиться родными и знакомыми. Такую учебу одобряем.