Java для начинающих. Урок 45: Сериализация (часть 1).

Поділитися
Вставка
  • Опубліковано 9 лип 2017
  • МОЙ НОВЫЙ КУРС: • Мой курс "Продвинутая ...
    ПРАКТИКА НА JAVA: java-marathon.tilda.ws
    Реклама и сотрудничество: alishev.neil@gmail.com

КОМЕНТАРІ • 194

  • @alishevN
    @alishevN  7 років тому +51

    Флаг = индикатор.

    • @user-vp5bg3yv8c
      @user-vp5bg3yv8c 6 років тому +1

      какой Флаг = индикатор.?

    • @sayhellotoroy
      @sayhellotoroy 5 років тому +8

      @@user-vp5bg3yv8c интерфейс-маркер, что бы обозначить, что данный класс пренадлежит к чему-то. В данном случае к Серилазизации

  • @asunali313
    @asunali313 6 років тому +124

    на javarush один из пользователей в комментарии оставил ссылку на это видео.
    у этого коммента 22 лайка.
    я подумал вам стоит знать)

    • @user-dh1it2ry6p
      @user-dh1it2ry6p 5 років тому +4

      Я как раз оттуда)

    • @ArtemNiknameName
      @ArtemNiknameName 5 років тому

      уже 69

    • @arthurfonzerelli6484
      @arthurfonzerelli6484 4 роки тому +1

      О, это же был я))

    • @arthurfonzerelli6484
      @arthurfonzerelli6484 4 роки тому +6

      @@einoharanen6828 зря ты так. как сборник задач - jr вполне норм. Теория там конечно не очень объясняется.

    • @Cluster-live
      @Cluster-live 4 роки тому

      83

  • @Andrzej3935
    @Andrzej3935 2 роки тому +20

    Вы просто лучший учитель, всё последовательно и без лишних слов/усложнений. Спасибо вам!

  • @azizbek5375
    @azizbek5375 3 роки тому +10

    Только не останавливайся, у тебя очень полезные видеоуроки

  • @Devivl
    @Devivl Рік тому

    Огромная благодарность, Наиль! Очень четкое объяснение.

  • @hannahr5037
    @hannahr5037 6 років тому +5

    _Отличный туториал. Все просто и понятно._

  • @ilyazvorygin7284
    @ilyazvorygin7284 3 роки тому +1

    Отличное объяснение, спасибо за Ваш труд!

  • @Kusokbanana15
    @Kusokbanana15 2 роки тому +3

    Отличное, подробное объяснение на простом, понятном примере.
    Информация усваивается мгновенно.
    Благодарю за труд.

  • @user-le4bp8ty2m
    @user-le4bp8ty2m 2 роки тому +5

    Спасибо большое. Очень доступно! Преподаватель от Бога!

  • @androidkotlin-6234
    @androidkotlin-6234 2 роки тому +3

    Красава, парень!
    Доступно объясняешь!

  • @undead9179
    @undead9179 2 роки тому +2

    Лучшее объяснение, которое я встречал, спасибо)

  • @zeroQuantumNull
    @zeroQuantumNull 3 роки тому +2

    Вы лучший на ютубе по урокам java. Мне всё нравиться. Ваши видосы + статьи + книга = мощь

  • @user-io6lj7je3h
    @user-io6lj7je3h 4 роки тому +2

    Супер объяснение, спасибо!

  • @rodiongolovin7736
    @rodiongolovin7736 5 років тому +1

    Очень наглядно!! Круто

  • @user-zn6tk7jn6e
    @user-zn6tk7jn6e 6 років тому

    Все очень доступно, спасибо.

  • @kladmonet9
    @kladmonet9 3 роки тому

    Благодарю, просмотрел с интересом!

  • @halcyon-s
    @halcyon-s Рік тому

    Большое спасибо за уроки!

  • @dmytrohelbak
    @dmytrohelbak 5 років тому +14

    Раньше в комменте писал тебе, что ты лучший, но сорри...
    Ты САМЫЙ ЛУЧШИЙ!!!
    Спасибо again))

  • @sergiyrudenko905
    @sergiyrudenko905 6 років тому

    Спасибо большое!!! Отличное видео!

  • @timankov
    @timankov 2 роки тому

    лучшее объяснение, что я видел!! спасибо!)

  • @itNet12
    @itNet12 5 років тому

    спасибо большое за курс

  • @SorroDorro
    @SorroDorro 3 роки тому +12

    А разве мы не должны закрывать поток в блоке?
    finaly{
    oos.close()
    }
    так как в блоке try, может вылететь exception и поток не закроется

    • @siverov21
      @siverov21 3 роки тому +5

      Так и есть
      Верное уточнение

    • @worker_chan1301
      @worker_chan1301 5 місяців тому

      Более правильно использовать try с ресурсами

  • @FreeFire-zd3ql
    @FreeFire-zd3ql 4 роки тому

    Очень полезное видео, лайк подписка и спасибо

  • @mikhaillazarev5378
    @mikhaillazarev5378 2 роки тому +1

    Это прекрасно.

  • @Anatoli-bq1pe
    @Anatoli-bq1pe 2 роки тому +1

    Большое спасибо!

  • @a.d.4418
    @a.d.4418 4 роки тому

    Спасибо за урок

  • @abbosagzamov8499
    @abbosagzamov8499 3 роки тому +4

    Единственный на Ютубе кто объясняет очень точно и доходчиво , все четко и детально спасибо вам

  • @evaristegalois450
    @evaristegalois450 5 років тому +2

    лучший лектор

  • @vlad_ok99hlcst88
    @vlad_ok99hlcst88 6 років тому +1

    Какой же ты четкий)) все-все понятно. Продолжай в том же духе!)

    • @alishevN
      @alishevN  6 років тому +3

      Спасибо! Скоро выйдет мой курс "Продвинутая Java". Будут затронуты такие темы как коллекции, многопоточность, тестирование и многое другое. Следите за обновлениями на канале :)

    • @vlad_ok99hlcst88
      @vlad_ok99hlcst88 6 років тому

      javaRussia конечно буду следить) ты единственный по джаве кого я смотрю и на кого подписан)

  • @Alexey2872
    @Alexey2872 4 місяці тому

    Замечательное видео все оч понятно

  • @olexiypysarenko8090
    @olexiypysarenko8090 6 років тому

    Thank you!

  • @sedasimonyan4103
    @sedasimonyan4103 3 роки тому

    Спасибо огромное @alishev

  • @PowerSharks
    @PowerSharks 7 років тому

    Thanks a lot!

  • @farfar3890
    @farfar3890 2 роки тому

    огонь!

  • @Denis-wn1xr
    @Denis-wn1xr 3 роки тому

    спасибо!

  • @MgsMen
    @MgsMen 6 місяців тому

    Тупо топ учитель. Идеальное сочетание практики и теории

  • @MyChoozy
    @MyChoozy 4 роки тому +6

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

    • @dmitriyfedorino4255
      @dmitriyfedorino4255 3 роки тому +5

      Поправка - IDE не предлагала трансформировать 2 catch блока в multi-catch блок, так как FileNotFoundException наследуется от IOException. Символ, которым разделяются исключения в multi-catch блоке называется vertical bar и не является логическим "или"
      docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html

    • @liberatdoleg5965
      @liberatdoleg5965 9 місяців тому

      Мульти кэтч, можно было бы использовать тут IOException | ClassNotFoundException только

  • @Steklopod
    @Steklopod 7 років тому

    То, что нужно было

  • @pavel_kotik
    @pavel_kotik 7 років тому +16

    Ты топ! Сколько видео просмотрено, сколько джаварашей и прочих перекодировано, но только ты помог мне разобраться со множеством вопросов.
    Моё почтение и моя подписка обеспечены (:

    • @alishevN
      @alishevN  7 років тому +3

      :)

    • @fara0n333
      @fara0n333 7 років тому +3

      Потому что все по мелочам розьясняет )

    • @diegod4811
      @diegod4811 6 років тому

      И как Javarush?

    • @user-jf9me5iu2l
      @user-jf9me5iu2l 6 років тому

      давно пора прочитать философию джавы и не тратить время на просмотр видосов которые можно сомтреть в х2 скорости

  • @borikosipyan
    @borikosipyan 7 років тому +6

    Спасибо огромное за Ваш труд! Он действительно очень полезен. Посмотрел этот урок и сразу подписался.

  • @JonnyToHell
    @JonnyToHell 3 роки тому +1

    7:20 много раз пересмотрел, но не дошло)))
    а видео отличные!!Спасибо тебе!

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 2 роки тому

      что именно не понятно?

    • @qreol136
      @qreol136 2 роки тому

      @@Das.Kleine.Krokodil Как ваши успехи?)

  • @user-fk7jl4ht1c
    @user-fk7jl4ht1c 5 років тому

    Шикарно объяснил) Спасибо тебе

    • @Holdy_Couldy
      @Holdy_Couldy 4 роки тому +2

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

    • @user-fk7jl4ht1c
      @user-fk7jl4ht1c 4 роки тому +2

      @@Holdy_Couldy привет . Всегда ставлю комментарии чтобы об авторе многие узнали он очень хорошо объясняет, но начал учить другой язык, java не зашла ))) удачи в обучении друг

    • @Holdy_Couldy
      @Holdy_Couldy 4 роки тому +1

      @@user-fk7jl4ht1c привет, если не секрет почему не зашла джава и что начал учить и как идет то что ты сейчас учишь?
      спасибо и тебе тоже )))

    • @user-fk7jl4ht1c
      @user-fk7jl4ht1c 4 роки тому

      @@Holdy_Couldy я работал в техподдержке сказали учи 1с мы тебя повысим до программиста, я забросил начал учить 1с и понял что не моё от слова совсем ))) потом наткнулся на Скуторенко и понял что я влюбился в этот язык swift далее после Скуторенко нашел ребят с сайта Swift Books, и сейчас смотрю их уроки. Конечно многое не понятно это нормально главное делать понимание придет))) но мне нравится IOS

    • @Holdy_Couldy
      @Holdy_Couldy 4 роки тому

      @@user-fk7jl4ht1c о, прикольно)) посмотрим насколько меня хватит, но запал еще вроде есть) еще раз удачи и терпения в обучении)

  • @user-lt5wj6bv9q
    @user-lt5wj6bv9q 3 роки тому

    Лучший

  • @mykolazhabko3228
    @mykolazhabko3228 4 роки тому

    Подскажи как настроить так чтобы в конструкторе класса подсвечивались поля. Спасибо

  • @skatskau1102
    @skatskau1102 6 років тому +7

    Спасибо за урок. Есть вопрос. Объясните, пожалуйста, каким образом у нас "подхватился" переопределённый метод toString(). Где и как именно мы его вызвали в классе ReadObject? Спасибо.

    • @user-mv8ex3nn3i
      @user-mv8ex3nn3i 6 років тому +26

      При вызове System.out.println над объектом (класс Object), всегда срабатывает его внутренний метод toString(), который был переопределён ранее. Из оф. документации:
      public String toString()
      Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.

  • @user-kl3mt7rl2n
    @user-kl3mt7rl2n 5 років тому

    👍🏻

  • @Artem_35_
    @Artem_35_ 5 років тому +10

    Спасибо большое. Пересматриваю уже и возник вопрос.
    Вы закрываете объекты FileInputStream/FileOutputStream, а почему не закрываете сразу после этого соответствующие объекты ObjectInputStream/ObjectOutputStream?

    • @skt5659
      @skt5659 5 років тому +19

      Думаю вы уже разобрались, так что пишу на будущее...
      Он закрывает не FileInputStream/FileOutputStream, а ObjectInputStream/ObjectOutputStream...
      Object поток оборачивает Файловый поток, и когда закрывается внешний поток, внутренний тоже будет закрыт, надеюсь я правильно понял)

    • @user-vq6rw7sv1w
      @user-vq6rw7sv1w 3 роки тому

      @@skt5659 А это работает также с File и Scanner, PrintWriter?

  • @alekseyfrozis937
    @alekseyfrozis937 4 роки тому +10

    А как узнать сколько объектов в файле? В примере мы точно знаем, что их 2, потому и создаем 2 скастованных объекта типа Person. А если бы мы не знали кол-ва объектов, которых надо считать?? Подскажите, пжста

    • @complexity7032
      @complexity7032 Рік тому +1

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

    • @code_la
      @code_la Рік тому

      ​@@complexity7032 не совсем лучший вариант. Имхо Лучше завести поля с доп информацией, и с ними работать

  • @Ilya787
    @Ilya787 7 років тому +13

    Спасибо за видео. Есть вопрос: в Person1 и Person2 мы дважды "одинаково" читаем из объекта ObjectInputStream, но откуда java знает, что в Person2 нужно прочитать именно второй объект, а не первый?

    • @alishevN
      @alishevN  7 років тому +16

      Возможно название метода "readObject()" не совсем точно отражает суть происходящего. Чтобы стало понятно, представьте, что метод называется "readNextObject()". В реализации ObjectInputStream есть "указатель", который "смотрит" на текущий объект. Вызов метода readObject() сдвигает этот указатель так, чтобы он смотрел на следующий объект в файле.
      Если вам вдруг надо два раза пройтись и десериализовать объекты из файла, вы всегда можете создать второй объект ObjectInputStream и его указатель опять будет смотреть на первый объект в файле.

    • @alekseyfrozis937
      @alekseyfrozis937 4 роки тому +5

      @@alishevN как узнать сколько объектов в файлике? тут мы знаем, что их 2 и создали 2 переменные типа Person. А если бы не знали? Как тогда считать (десериализовать) все файлы, не зная их кол-ва?

    • @user-ef5ni3ej7t
      @user-ef5ni3ej7t 2 роки тому

      @@alekseyfrozis937 очень хороший вопрос!!! На который нет ответа :((((

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 2 роки тому

      @@alekseyfrozis937 наверное зависит от задачи
      можно например в начало файла записать сколько там объектов лежит
      или читать пока не возникнет исключения типа "обнаружен конец файла"
      или еще как то

  • @user-ev1me4xq8v
    @user-ev1me4xq8v 4 роки тому

    клёвый канал, я тоже с джавараш.

  • @stanislavomelchenko5271
    @stanislavomelchenko5271 4 роки тому +7

    Спасибо , смотрю твою рекламу. Что бы ты за свои труды получал денежку.

  • @user-vv2yg6ux7g
    @user-vv2yg6ux7g 2 роки тому

    Спасибо за труд все получилось но ничего не запомнилось.

  • @ThePetrovichl32
    @ThePetrovichl32 6 років тому +1

    Очень жду ваши уроки! Спасибо вам огромное за них! Подскажите пожалуйста, если не секрет, какую книгу вы могли бы порекомендовать по Java для чтения?

    • @alishevN
      @alishevN  6 років тому +3

      Брюс Эккель - "Философия Java"

    • @ThePetrovichl32
      @ThePetrovichl32 6 років тому

      Спасибо

  • @alexeykatachigov2788
    @alexeykatachigov2788 3 роки тому

    Хм... а если в значениях объекта будет null? Как проверку правильно сделать? Я пробовал if null else но не прокатывает. Все равно null сериализует, а при загрузке ошибку выдает.

  • @user-dk2gz3cg6i
    @user-dk2gz3cg6i Рік тому

    вопрос, в ReadObject когда считывались обе персоны, как система определила, что персон1 это все данные с персон1 в WriteObject? Как разделялись обе персоны правильно?

    • @evpatorya
      @evpatorya Рік тому

      видимо эту инфу тоже шифрует в файл

  • @bfdhtfyjhjj
    @bfdhtfyjhjj 6 років тому +9

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

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 2 роки тому +1

      видимо автор сначала что то хотел с ними делать
      а так то да, они не нужны в этом примере

  • @user-su1wf3wz6c
    @user-su1wf3wz6c Місяць тому

    ЗаJava

  • @Anatolii_Bychko
    @Anatolii_Bychko Рік тому

    Задам вопрос, пересмотрел все комменты нет такого вопроса. Я все делал по Вашему коду, но решил ID инкрементировать в конструкторе, что б по понятным причинам его не вводить. Так тогда с таким кодом все записывается в файл, но увы не считывается, может дальше в уроках и есть на это ответ, но пока что еще не дошел, вот и спрашиваю. Как можно решить даную проблему? Еще раз благодаою за отличный урок, лайкнул и подписался.

  • @nikolakyz85
    @nikolakyz85 3 роки тому +2

    Единственный вопрос, который у меня остался после просмотра - почему нельзя поставить лайк дважды?!

  • @antondityatev2338
    @antondityatev2338 3 роки тому +1

    привет. может кто нибудь объяснить, почему объект person1 после прочтения из файла недоступен за блоком try/catch?

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 2 роки тому +1

      из за того что он находятся в фигурных скобках, и только там его видно
      т.е. дело не в try/catch

  • @easybusyja
    @easybusyja 3 місяці тому

    FileInputStream тоже, наверное, над закрыть?

  • @marianservachak3407
    @marianservachak3407 6 років тому

    Спс за видос. Есть вопрос. А что если у нас 50 объектов а не два?

    • @dev_bob
      @dev_bob 6 років тому

      foreach в помощь

  • @truestories6854
    @truestories6854 6 років тому +3

    Как посмотреть документацию класса? Я понимаю что есть какая-то комбинация клавиш.

    • @alishevN
      @alishevN  6 років тому +3

      На маке я зажимаю клавишу command. На Windows посмотрите на сайте Intellij Idea.

    • @truestories6854
      @truestories6854 6 років тому

      Спасибо!

    • @user-mv8ex3nn3i
      @user-mv8ex3nn3i 6 років тому +8

      CTRL + клик по классу

  • @user-lj8by1ln8v
    @user-lj8by1ln8v 5 місяців тому

    Кто-нибудь знает как считать объекты из файла, если они добавлялись туда в конец (не один раз, модификатор append: true)?

  • @user-kb9wl3cw2y
    @user-kb9wl3cw2y 7 років тому +1

    ♥️

  • @user-sq5cr5uq8i
    @user-sq5cr5uq8i 3 роки тому

    Шикарные уроки!!!! Есть вопрос, почему мы в классе Person переопределяем метод toString, а не создаём новый с другим именем, например getInfo?

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 2 роки тому +2

      потому что это проще и так заложено в java
      для сравнения:
      System.out.println(person1)
      System.out.println(person1.getInfo())

    • @RadioGubitel
      @RadioGubitel Рік тому

      @@Das.Kleine.Krokodil Можно же прсто person1.getinfo(); а в методе getinfo уже будет спрятан println

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil Рік тому

      @@RadioGubitel а если не нужно выводить на экран?

    • @RadioGubitel
      @RadioGubitel Рік тому

      @@Das.Kleine.Krokodil тогда не выводить. Обычно я создаю метод print или printAll если вывести все элементы. А get это геттер.

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil Рік тому +1

      @@RadioGubitel зачем создавать print если он уже есть

  • @Artur_Maji
    @Artur_Maji 2 роки тому

    Один момент-
    Почему в writeobject - fos(close), а в ридобджект - ois(close)?

  • @user-oe8jb4zu5n
    @user-oe8jb4zu5n 2 роки тому +2

    Сейчас людей не id, а QR код)))

  • @agens9538
    @agens9538 2 роки тому

    почему в исключении не создать бы файл?

  • @liberatdoleg5965
    @liberatdoleg5965 9 місяців тому

    Есть вопрос, зачем здесь нужны были геттеры? Если мы их не использовали?

  • @timankov
    @timankov 2 роки тому

    жаль нельзя два лайка поставить!))

  • @LerokUsh
    @LerokUsh 4 роки тому +1

    А почему мы не закрываем fileinputstream и out.. ?

    • @andrei8299
      @andrei8299 3 роки тому +1

      тк их использует ois и oos. Закрывая внешний поток, должен закрываться внутренний в том числе. Также выше был коммент, что закрывать потоки надо в блоке finally или, скорее всего, try с ресурсами тоже может решить этот вопрос

  • @user-ti4oc7kd2l
    @user-ti4oc7kd2l 6 років тому

    Я только не могу понять , почему ты не юзаешь try с ресурсами.
    А так класс рассказываешь.
    Жалко , что занялся коммерцией и новый курс платный)
    За 5 баксов купил бы - 10 уже жалко . кек))

    • @alishevN
      @alishevN  6 років тому +3

      На уроке 47 рассказывается про try-with-resources.

    • @summerray888
      @summerray888 5 років тому +22

      Странно, что вам жалко, что автор занялся коммерцией. Уроки шикарны, подобный труд достоин вознаграждения. Автор не обязан заниматься благотворительностью, к тому же очень много уроков выложено в бесплатном доступе, за что ему огромная благодарность. 10 баксов не такие и большие деньги, тут скорее вопрос приоритетов, куда потратить бабло. Я платный курс приобрела и не разочаровалась.

    • @alekseyfrozis937
      @alekseyfrozis937 4 роки тому +1

      @@summerray888 аналогично!

  • @sLasHee85
    @sLasHee85 4 роки тому +3

    Зачем в классе Person создали геттеры, если не воспользовались?

    • @user-kv8kt7mi9i
      @user-kv8kt7mi9i 3 роки тому +1

      По привычке наверное))

  • @mrnobody9369
    @mrnobody9369 4 роки тому +2

    Объясните кто нибудь пожалуйста зачем мы пишем эту строку , если можем обойтись без нее, и для чего она нужна?public String toString() {
    return id + ":" + name;

    • @NoskovIvan
      @NoskovIvan 4 роки тому +6

      Пересмотри 24 урок про объекты и метод toString, думаю сразу прозреешь, но попробую объяснить. Методом toString ты создаешь инструкцию записи данных объекта. Этот метод он всегда вызывается скрыто у объекта, поэтому если ты удалишь этот метод и попробуешь написать System.out,println(person1), а на самом деле комп видит System.out,println(person1.toString()) с пустым методом toString(), то получишь хэш код - Person@5a2e4553, а создавая этот метод, ты даешь понять компьютеру что тебе нужно записать его ид и имя. Надеюсь это именно так, и я хоть немного дал понять, сам только второй месяц учусь.

  • @yuras182
    @yuras182 4 роки тому +3

    Привет! Спасибо за уроки. Вы закрываете потоки в блоке try, но если возникнет исключение то поток закрыт не будет. Не лучше ли закрывать в finally?

    • @alishevN
      @alishevN  4 роки тому +6

      Согласен. Лучше в finally.

    • @divergenny
      @divergenny 3 роки тому

      А как его в finally закрыть если мы с помощью try Catch ловили исключение ? переменная же не будет видна в finally

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 2 роки тому +3

      @@divergenny один из вариантов такой, и погугли еще "закрытие потоков в java при исключениях"
      FileInputStream fis = null;
      ObjectInputStream ois = null;
      try {
      fis = new FileInputStream("people.bin");
      ois = new ObjectInputStream(fis);

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 2 роки тому +1

      @@divergenny и см урок 47

    • @divergenny
      @divergenny 2 роки тому +1

      @@Das.Kleine.Krokodil Спасибо большое

  • @user-xg5qu1or6f
    @user-xg5qu1or6f 4 роки тому

    Очень все круто. Но есть вопрос, а если человек который сидит за другим компом. хочет прочитать файл но он не знает ничего о классе Person. Тогда он не сможет создать (Person)ois.readObject(). Как тогда быть?

    • @alishevN
      @alishevN  4 роки тому +1

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

    • @user-xg5qu1or6f
      @user-xg5qu1or6f 4 роки тому

      @@alishevN Понял, спасибо.

  • @artemoborozhnyy2038
    @artemoborozhnyy2038 3 роки тому +1

    Что то я не понял, где ты вызвал метод toString, когда читал файл.
    Как он сам его вызвал? Объясните плз.

    • @user-kv8kt7mi9i
      @user-kv8kt7mi9i 3 роки тому

      Я тоже не понял. Кто понял?

    • @hagabobo88
      @hagabobo88 2 роки тому +2

      @@user-kv8kt7mi9i ту стринг - он же в классе пёрсон. Его же переопределили. он работает каждый раз, когда нужно представить объект в виде строки (например, если в соут положить объект пёрсон1 - джава знает как отобразить этот объект, потому что мы в классе пёрсон "изобразили" отображение объекта)

    • @user-kv8kt7mi9i
      @user-kv8kt7mi9i 2 роки тому +1

      @@hagabobo88 Привет.
      Я сейчас сижу и смеюсь над своим вопросом)
      Сейчас я уже работаю джуном😀😀

    • @hagabobo88
      @hagabobo88 2 роки тому

      @@user-kv8kt7mi9i ну блин, тогда потрать немного своего времени и расскажи про свой путь успеха :)

    • @user-kv8kt7mi9i
      @user-kv8kt7mi9i 2 роки тому +1

      @@hagabobo88 учился по этому каналу dmdev. Канал топ!

  • @objectobj
    @objectobj 2 роки тому +1

    А почему поток FileInputStream ты закрываешь, а ObjectInputStream - нет?

    • @viacheslav_chudnovskyi
      @viacheslav_chudnovskyi Рік тому +1

      Это называется цепочка потоков, достаточно закрыть любой из них

  • @education7282
    @education7282 7 років тому

    Когда в качестве конструктора для ObjectOutputStream я передаю fos, то в окне лампочки отсутствует пункт
    "Generalize catch for "java.io.FileNotFoundException" to "java.io.IOException""(prntscr.com/g01ag1). Каким образом мне обойти эту проблему и какая причина того, что у меня нет данного пункта? Старая версия java?(7)
    Пользуясь моментом, хотел бы поблагодарить вас за столь полезные и информативные видео. Очень рад, что нашёл ваш канал)

    • @alishevN
      @alishevN  7 років тому

      Скорей всего вам надо обновить Intellij Idea.

    • @education7282
      @education7282 7 років тому

      Спасибо, теперь всё работает

  • @Bot-yy3cm
    @Bot-yy3cm 2 роки тому

    насколько помню try сам закрывает поток

  • @sergeysergey7176
    @sergeysergey7176 5 років тому +1

    Программа работает, но почему у меня файле не ничего

    • @gleb_bro8710
      @gleb_bro8710 4 роки тому

      Может поток не закрыл

  • @omurturdubekov5182
    @omurturdubekov5182 3 роки тому

    У меня при написании oos.writeObject(person1); ругается что нет такого метода как writeObject! что делать?

    • @user-ml2et9iw2l
      @user-ml2et9iw2l 3 роки тому

      как решил проблему?

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 2 роки тому

      у меня так было когда с большой буквы написал

  • @Last_Feanoring
    @Last_Feanoring 2 роки тому

    А если бы переменные в классе ReadObjects назывались бы person 3 i person 4? мэйн скачал бы для их полей значение из файла для 1 и 2 персоны?

    • @AlexShev01
      @AlexShev01 2 роки тому

      Да конечно, мы их могли вообще в массив считать

    • @DolphinArtem
      @DolphinArtem 2 роки тому

      @@AlexShev01 не понятно, напишите, пожалуйста, пример.

  • @dushegub_kill
    @dushegub_kill 7 років тому

    Когда следующие уроки?))

    • @alishevN
      @alishevN  7 років тому +1

      на этой неделе!

    • @dushegub_kill
      @dushegub_kill 7 років тому

      кстати, про алгоритмы уроки будут?)

  • @Youtooobo
    @Youtooobo 2 роки тому

    Еще бы в видео было показано содержимое файла .bin , было бы вообщше супер. Просто в текстовом редакторое открыл бы файл после записи.

  • @samposebe1268
    @samposebe1268 2 роки тому

    а почему джава по умолчанию не делает калссы сериализуемыми - это связано с какими-либо тратами ресурсов?

    • @ZeBatua
      @ZeBatua Рік тому

      Значит надо)
      У программистов ничего не бывает просто так

  • @getteg6468
    @getteg6468 4 роки тому

    оказывается сериализация не сложно совсем

  • @arturfn5256
    @arturfn5256 4 роки тому

    Почему у меня компилятор выдает следующее?
    com.company.file.writeandread.Person@5f4da5c3
    com.company.file.writeandread.Person@443b7951
    Это уже при чтении из файла

    • @TheSweetMoloko
      @TheSweetMoloko 4 роки тому +1

      у тебя toString переопределён в классе Person?

    • @arturfn5256
      @arturfn5256 4 роки тому +1

      @@TheSweetMoloko в этом и была ошибка)

  • @user-vp5bg3yv8c
    @user-vp5bg3yv8c 6 років тому

    написано все точно знак в знак и ни чего не записывается, файл пустой

  • @einoharanen6828
    @einoharanen6828 5 років тому

    Не пойму, зачем тут нужны геттеры?

    • @user-go7iy8gy2t
      @user-go7iy8gy2t 4 роки тому

      Инкапсуляция? Поля приватные, доступ с другого класса не получить?

  • @minepolz320
    @minepolz320 7 років тому +1

    уряяя

  • @user-bv3lb1ui6d
    @user-bv3lb1ui6d Рік тому +1

    Кровь из глаз, смотреть в 2022 году, используя уже Try с ресурсами, вместо этой мути с миллионами строчек кода.

    • @yuritian8830
      @yuritian8830 8 місяців тому

      Есть рекомендации, статьи, видео, уроки, книги...?

  • @immortal-spirit-13
    @immortal-spirit-13 4 роки тому

    разочарован, выбрасывает исключение((

  • @uliykazakov
    @uliykazakov 5 років тому

    Майк и Боб... Это что, отсылка к Твин Пиксу??

  • @haydaralihaydarov5397
    @haydaralihaydarov5397 2 роки тому

    a zachem nam nujno getteri?? pojalusta otvette!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  • @volodymyrchornyi9389
    @volodymyrchornyi9389 6 років тому

    package FileSave.SaveObject;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectOutputStream;
    public class SaveObject {
    public static void main(String[] args) {
    Person person1 = new Person(1, "Mike");
    Person person2 = new Person(2, "Bob");
    try {
    FileOutputStream fos = new FileOutputStream("beople.bin");
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(person1);
    oos.writeObject(person2);
    oos.close();
    } catch (IOException e) {
    System.out.println("wrong file or some else");
    }
    }
    }
    У меня вот так... естественно в файл ничего не записалось, эксепшн не отработал что-ли... Не пойму. Уроки - доступнее материала для понимания не находил!!!

    • @user-zn6tk7jn6e
      @user-zn6tk7jn6e 6 років тому +1

      Обратите внимание где вы создаете сам файл для хранения данных, в папке src или в корневом каталоге?

    • @user-mv8ex3nn3i
      @user-mv8ex3nn3i 6 років тому +2

      beople.bin))

    • @user-up6my6ne1h
      @user-up6my6ne1h Рік тому +1

      Наверное, написал имя файла с ошибкой - beople.bin, java его создала и записала данные в него. Ты же смотришь свой файл people.bin и, естественно, ничего в нём не видишь.

  • @fernandaeschallots2485
    @fernandaeschallots2485 21 день тому

    Thanks a lot!