Десериализация

  • 11
  • Недоступна
На вход подается поток, в который записан сериализованный объект класса A либо класса B. Десериализуйте объект в методе getOriginalObject так, чтобы в случае возникновения исключения было выведено сообщение на экран и возвращен null. Реализуйте интерфейс Serializable там, где необходимо.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (79)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
6 февраля, 04:52
-10 попыток из-за TimeOut , оказывается по невнимательности создал объект ObjectInputStream и передал в конструктор объект , который приходит в метод , ЛОЛ
Женя22 уровень, Минск
5 февраля, 09:04
Привет! Если даже после исправления блока try/catch на тот, который пишут в обсуждении, валидатор все равно не принимает задачу, обнулите прогресс задачи и решите (либо скопируйте решение) заново. У меня почему-то валидатор не принимал даже правильное решение, пока я не обнулил прогресс и не скопипастил решение по-новому. Удачи!
Verter23 уровень, Дрогобич
8 января, 01:27
Вы решили задачу лучше, чем 0% учеников. Вам удалось ее решить с 23 попытки. Среднее количество попыток для этой задачи 3.68. Всего эту задачу решили 10289 учеников. Нужно все Exception ловить!!! p.s. Нужно зделать достижение вроде - "Потрачено".
Андрей23 уровень
15 февраля, 13:51
Спасибо! Ваша подсказка с экономила мне пару-тройку попыток!
Игорь35 уровень, Брест
6 января, 09:46
Действительно если использовать ctrl+alt+T сформируется блок try{}catch{} с двумя видами исключений IOException или ClassNotFoundException. В условии не оговаривается какой вид исключения нужно отловить, может проблема в самом файле или в чём-то другом. Поэтому следовало бы, на всякий случай, отловить все Exception.
Алексей33 уровень, Москва
1 декабря 2019, 18:15
Можно вообще так:
try {
      return (A) objectStream.readObject();
       }
Далее отлавливаем любую ошибку
Yerzhan26 уровень, Актау
28 октября 2019, 04:42
странно, потратил три попытки, оказывается неправильно выводил исключения. Я выводил только эти два catch (IOException | ClassNotFoundException e), а надо было любые. поменял на это и сразу валидатор принял catch (Exception e)
LuneFox23 уровень, Москва
21 октября 2019, 14:02
Я задачу как-то по-своему понял. Думал, надо так: если мы считали объект типа В, то вернуть В, если же нет, проверить - может, он А? Если так, то вернуть А. А если ни того, ни другого не произошло, закрыть поток и выплюнуть исключение с каким-нибудь сообщением в консоль, а потом вернуть null. Сделал, и прокатило с 1 раза. Я так понимаю, что можно было просто возвращать объекты типа А, не уточняя, являются ли они ещё В к тому же.
try {
    Object object = objectStream.readObject();
    if (object instanceof B) return (B) object;
    else if (object instanceof A) return (A) object;
    else {
        objectStream.close();
        throw new IOException();
    }
} catch (Exception e) {
    System.out.println("Something is wrong!");
    return null;
}
there there28 уровень, Санкт-Петербург
26 сентября 2019, 06:20
вот блин... решение правильное было, но валидатор не пускал, пока не вывела любой эксепшн(( а сообщения вообще не было в требованиях, только в описании. с 3 попытки угадала, чего ему надо. черт бы побрал этот "спортивный интерес" всё с первого раза решать.
fedor23 уровень, Москва
23 сентября 2019, 13:56
задача на внимательность (последний п. требований) читай так: = ЛЮБОЙ эксепшн ;)
Павел Минеев41 уровень, Челябинск
2 сентября 2019, 15:10
Сдал с первого раза, условие показалось мутным - ждал подвоха, но не дождался. instanceof здесь не нужен т.к.
try {
    A a = (A) objectStream.readObject();
    return a;
если передали объект типа A или B, кастинг сработает штатно, а если нет - вылетит эксепшен, который по условию задачи нам и нужно ловить и обрабатывать.
} catch (Exception e) {
    System.out.println("Ахтунг! Ошибка!");
    return null;
}
Алёна С.23 уровень, Днепр
12 сентября 2019, 00:10
Почему то я первый раз решил ловить ClassNotFoundException
Виталий Вакуленко23 уровень, Киев
19 сентября 2019, 18:58
Тоже ловил ClassNotFoundException... ведь логично ))
vadtel36 уровень, Минск
9 октября 2019, 12:25
Но и ClassCastException тоже может быть если получили левый вообще объект, и IOException если проблемы с потоком... и для всего должно быть return null
Валихан24 уровень, Санкт-Петербург
13 декабря 2019, 12:09
Можно еще маленько улучшу ваше красивое решение )) Вместо: System.out.println("Ахтунг! Ошибка!"); Написать: System.out.println(e.getMessage());