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

  • 11
  • Недоступна
На вход подается поток, в который записан сериализованный объект класса A либо класса B. Десериализуйте объект в методе getOriginalObject так, чтобы в случае возникновения исключения было выведено сообщение на экран и возвращен null. Реализуйте интерфейс Serializable там, где необходимо.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (56)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Владислав Пахомов26 уровень, Белгород
5 июля, 07:06
Вы решили задачу лучше, чем 75% учеников. Вам удалось ее решить с 1 попытки. Среднее количество попыток для этой задачи 3.8. Всего эту задачу решили 9106 учеников. Уряяя
Dmitry Potamoshnev30 уровень, Москва
30 июня, 18:53
Условие конечно тяжелое. Но в целом - просто бегло пробежавшись по комментам тут сразу стало понятно, что делать чтобы избежать проблем с валидатором.
MrKermit20 уровень, Москва
7 мая, 11:34
Вы решили задачу лучше, чем 8% учеников. Вам удалось ее решить с 8 попытки. Дно пробито) Исключение Exception, не надо вписывать специфичные.
Eugene23 уровень
13 апреля, 20:21
Создал поток для чтения из файла и убил семь попыток...:(
Николай27 уровень
24 марта, 11:39
В описании задачи: "... чтобы в случае возникновения исключения было выведено сообщение на экран и возвращен null." Там же, но в разделе требования: " ... должен возвращать null, если при попытке десериализации возникло исключение." Т.е. не требуется писать никаких сообщений, просто вернуть null
Радик30 уровень, Казань
18 февраля, 20:56
Делов-то, с 9 попытки
S3R3N1TY37 уровень, Санкт-Петербург
18 февраля, 18:14
Для теста привел классы к статическим и создал класс "C". Затем пытался десериализовать обьект класса С в методе getOriginalObject , что привело к исключению вида: java.lang.ClassCastException: Solution$C cannot be cast to Solution$A Добавил данное исключение и обработал, к тем catch, которые уже были при создании блока try. Но валидатор при проверке написал, что нужно перехватить Исключение- видимо общего типа. Итого: достаточно обработать один общий Exception.
Алексей Масис35 уровень, Новосибирск
20 февраля, 09:12
а зачем создавать класс которого нет в коде? Да и по условию задачи вроде как сказано На вход подается поток, в который записан сериализованный объект класса A либо класса B.
S3R3N1TY37 уровень, Санкт-Петербург
20 февраля, 09:32
Чтобы проверить работу программы: по условию Метод getOriginalObject должен возвращать null, если при попытке десериализации не был получен объект типа A. Я просто для себя сделал такой тест, чтобы проверить работу исключения. А ты как проверял, что написал в мейне, чтобы убедиться что выдает исключение ?
Алексей Масис35 уровень, Новосибирск
20 февраля, 09:37
так там наверное имелось ввиду, возвращать null если был получен объект типа B. А вообще с каждым лв условия все труднее понять)
Алексей Масис35 уровень, Новосибирск
20 февраля, 12:08
нуу правильно, но ведь чтобы вернуть null не обязательно ловить исключение)
S3R3N1TY37 уровень, Санкт-Петербург
20 февраля, 13:26
По заданию сказано так: "чтобы в случае возникновения исключения было выведено сообщение на экран и возвращен null." А ты через что делал- скинь код в личку. Спасибо.
Александр23 уровень, Казань
4 апреля, 07:54
Сначала не понял в чем дело: почему успешно кастится object и к A и к B - потом вспомнил про наследование. В итоге я получал класс объекта
String className = object.getClass().getSimpleName();
И если он не В - кидаю исключение
if (className.equals("B")) throw new Exception();
Хотя вот ниже покрасивей делали:
(!object.getClass().equals(A.class)
Dmitry Potamoshnev30 уровень, Москва
30 июня, 18:50
есть же instanceof:
//...
Object o = objectStream.readObject();
if (o instanceof A)
    //...
Даниил33 уровень
6 февраля, 12:16
Чем лучше пытаешься решить задачу, чем ближе к "непонятному описанию", тем больше времени и попыток тратишь. Решил бы с первого раза, так нет же, валидатору нужно более тупое решение где просто ловим одно верхнее исключение вместо нескольких более конкретных. Это я к тому что ловить нужно только Exception. А вывод сообщения, в данном случае, это походу просто printStackTrace. И того с 3 попытки только.
Юрий23 уровень, Москва
12 февраля, 11:37
Тоже самое.. решение правильное, но валидатор не принимает, ему нужно попроще
Loveandpepper33 уровень, Москва
29 января, 13:24
Протупил полчаса, пока не понял, что оказывается надо ловить не конкретные исключения, а ВСЕ исключения (просто Exception). Валидатор как всегда радует!
Николай Малинчик41 уровень, Санкт-Петербург
29 января, 21:09
та же фигня(
Oleg Fedoruk35 уровень
15 апреля, 19:03
спасибо, потратил 4 попытки впустую )
Vadim Krant26 уровень, Москва
20 января, 21:55
Классная задача, самая долгая затычка была вспомнить как классы сравнивать. Я уже не помню когда писал в мэйн что-то, вроде накидал код, без дебага подсунул валидатору, на удивление заходит пока с первого раза. Судя по статистике это не часто бывает. Задача простая, сравнение примитивными методами через получение классов я сделал через instanceof, красиво, просто и лаконично )