1. Java / Говнокод #11246

    +124

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    BufferedReader file = null;
        boolean moreData = true;
        //set the parameters
        this.textureDir = textureDir;
    
        //open a file
        try{
          file = new BufferedReader(
              new InputStreamReader(
              (new FileInputStream(filename))), 50000);
        } catch (Exception e) {System.err.println("kan model niet laden"); moreData = false;}
    
        //read shapes until no more data
        while(moreData)
        {
          Shape3D shape = readShape(file);
          if(shape != null)
          {
            tg.addChild(shape);
    
          }
          else
          {
            moreData = false;
          }
        }
    
        try{
          file.close();
          file=null;
        } catch (IOException e)
        {
          System.err.println("file " + filename + " could not be closed!");
        }

    Интересный способ обработки ошибок ввода-вывода.

    Естественно, при неудачном открытии файла вываливается по NullPointerException.

    Запостил: someone, 20 Июня 2012

    Комментарии (68) RSS

    • И break не осилен...
      Ответить
    • Нет другой такой нации, как немецкая, которая бы на столько ненавидела прописные буквы.
      Ответить
      • Где здесь немецкий?
        Ответить
        • Подозревая, что в "kan model niet laden".
          Ответить
        • Вах, и вправду голландский. А я подумал просто немецкий с ошибками.
          Ответить
          • А я думал, польский или чешский. Кто-то там "неладен".
            Ответить
          • Это определённо голландский, учитывая вот этот кусок кода на C из того же проекта:

            static void
            help()
            {
              fprintf(stdout,
            "3ds naar eigen formaat convertor\n"
            "Syntax: 3ds2java [opties] bestandsnaam\n"
            "\n"
            "Opties:\n"
            "  -h/--help               Deze help\n"
            "  -o/--output <bestandsnaam  Schrijf uitvoer naar bestandsnaam in plaats van stdout\n"
            "\n"
            );
              exit(1);
            }


            Сайт автора в домене .nl, только ссылка потерялась.
            Ответить
          • один фиг по идее голландский это диалект немецкого, считающийся отдельным языком чисто по культурно-политическим причинам :)
            Ответить
            • Вы ещё скажите, что украинский - диалект русского.
              Ответить
              • А так и есть.
                Ответить
                • докажи
                  Ответить
                • Известный лингвист Иосиф Виссарионович тоже писал по этому поводу научный труд - а все от того, что был по образованию лингвистом.

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

                  Но это спор из серии являются ли динозавры птицами или нет.
                  Ответить
                  • Вообще лингвистически вернее было бы сказать так: русский и украинский -- диалекты некоего "общерусского" языка (в имперской терминологии: малоросский/великоросский - диалекты русского). Потому как совр. русский хоть и является прямым единственным продолжением книжного языка Др. Руси (укр. -- просто быдлоговор деревни), он имел большое влияние московского и сопредельных диалектов, и сов. литературный укр. никак не может быть диалектом московского наречия.
                    Ответить
                    • вообще то современный русский язык изменился гораздо сильнее украинского со времен некоего их общего предка, так что делать громкие заявления по поводу единственного продолжения книжного языка др. Руси я бы поостерегся
                      Ответить
                      • Вы путаете кое-чо. Книжным языком на Др. Руси был восточнославянский извод старославянского, т.е. старокамакедонского диалекта из-под Солуни (грубо говоря, восточные славяне пытались говорить на элитном диалекте древних болгар, но делали это с ошибками и родился т.н. "церковнославянский"). Каждая территория Руси имела свой разговорный диалект восходящий к восточнославянскому диалектному континууму.

                        В России вплоть до 18 века книжным языком оставался церковнославянский (с разными вкраплениями из др.). После 18 века он перерос в симбиоз церковнославянских и местных некнижных элементов. На Украине же за литературный решили взять исключительно местные разговорные диалекты, таким образом полностью прервав книжную традицию. Таким образом, русский литературный язык имеет больше прав на преемственность.

                        Вообще языки в основном развиваются с одинаковой скоростью. Напр., церковнославянские элементы в русском компенсируются огромным пластом немецко-польских заимствований в украинском.
                        Ответить
                • Словосочетание "Киевская Русь" как бы намекает
                  Ответить
                  • Это словосочетание впервые было введено в оборот в начале 18 века господином Востоковым, когда он ошутил терминологическую нехватку -- нужно было отделять Русь 10-13 веков от Руси вообще (тогдашняя Россия, нопремер.) До Востокова Русь была просто Русью. Если на что и Киевская Русь намекает, так на то, что украинский -- диалект русского с 18 века :)
                    Ответить
                    • Ваша теория очень мало что общего имеет с действительностью. Украинский никогда не был диалектом русского, точно так же как болгарский или польский. Мало того, первые академии и грамматики были основаны / изданны именно на Украине, которая в то время была частью Великого княжества Литовско-Польского. Т.е. Могила или Сковорода не говорили / писали на диалекте русского языка, потому что такого еще вобщем-то и не было. Было Нижегороднее наречие и Московское наречие, которыми в официальной литературе не пользовались. Ломоносов учился в академии на Украине, в Киеве, если уж на то пошло, и учился на украинском / старорусском. Благодаря ему и людям его поддержавшим русский язык получил статус "настоящего" языка, т.е. используемого в официальных бумагах. До этого официальным был старославянский, который вобщем-то имеет больше общего с украинским, нежели с русским.

                      Но это никак не отменяет того, что украинский превратился в ветошь за последние столетия. Не развивался и, вобщем, по современным меркам, лучше бы уж говорили по-русски, все-таки более современный и богатый язык. Но с исторической точки зрения, считать украинский наречием русского - ошибка.
                      Ответить
                      • А мне нравится, как звучит украинский язык. Не надо его менять.
                        Ответить
                        • А я бы смержил русский и украинский...
                          Ответить
                      • А я нигде и не заявлял, что украинский это диалект русского. Последнее предложение это reductio ad absurdum. Всё что я написал (про термин "Киевская Русь", например) имеет непросредственное отношение к действительности.

                        >До этого официальным был старославянский, который вобщем-то имеет больше общего с украинским, нежели с русским.
                        Совершенно неверно, старославянский куда ближе к русскому, чем к украинскому. У нас не то что лексемы, даже грамматические формы -- старославянские. Напр, суффикс причастий -ующий -- заимств. из старославянского, в др.-русском это было исключительно -уючий (ЕМНИП в украинском такой суффикс непроизводителен, потому что украинский развивался из разговорных диалектов, а разговорному языку чужды (дее)причастные оборроты), или напр. в русском окончание гл. 3 л. 1. числа -ет (напр. будет, хочет) явное влияние старославянского (в укр., бел., и во всех слав. языках -- буде, хоче и т.д.)
                        Ответить
                        • Ну или типичный пример:
                          старослав. награда
                          рус. награда
                          укр. нагорода
                          Ответить
                        • И ничего подобного. Вы почитайте Сковороду, например, и всяческие теории по поводу украинского как разговорного варианта пропадут. Это была пропаганда такая, еще со времен царской России. Но, опять же, только пропаганда, для того, чтобы объяснить почему украинский - якобы второсортный. За аргументами обращайтесь к Субтельному и Драгоманову. Мне этого в универе хватило, и больше не интересно.
                          Ответить
                          • Мне нужно ничего читать, я лингвист (прикладной типа, поэтому и программирование). Сковорода писал книжным языком своего времени, т.е. церковнославянским, там украинским не пахнет. Открыл сейчас специально ссылки на его работы.
                            Как говорится, не учи учёного. Если же вы имели в виду какие-то его речи по поводу развития языков, то это просто не стоит читать -- лингвистика как наука практически не существовала до 19 века; до этого несли полный неверифицируемый бред и выдумки (в основном). В Рашке и ещё в начале 20 века была полная тьма по этому поводу. Вон, как Горький ляпнул что, весь мат с татарского -- так все и поверили. Или можно вспомнить Сталина с Марром.
                            Исторически лит. украинский куда более к народно-просторечный, чем лит. рус., это просто прослеживается на всех без исключения уровнях. Моя основная мысль была о том, что они прервали литературную преемственность, которую сами же и начали (книжный язык зародился в Киеве). Это просто действительность, никакой тут пропаганды нет.
                            Ответить
                            • Феноменальная глупось. Вы путаете литературу народников 19-го века, которая была в духе времени посвящена изучению народных традиций со схоластической / академической литературой до-имперского периода. Первые умышленно искали всякие просторечия и фольклер, т.как тогда так модно было, а последние писали на том языке, который им больше всего подходил для того, чтобы излагать свои мысли. Во времена Могилы и Сковороды простолюдины ничего не писали и не читали, т.как не умели, и их наречием никто не интересовался, разве что случайно.

                              В это же время русского языка и литературы, как таковой не существовало. Были только заимствования, и, в том числе, у литовцев с поляками, частью которых и была Украина (которую тогда так никто не называл, и тех, кого сегодня называют украинцами тогда называли "русскими"), например, в исторических частях старых городов обычно были "русские кварталы", где никогда тех, кого мы сегодня называем русскими не было.
                              С другой стороны. Первые книги на "русском" - теперешнем украинском языке были напечатаны в Галиции (Иваном Федоровым, опять же, украинцем), первые академии появились в украине в Киеве и Луцке более чем за 100 лет до того, как появилась первая академия в Питере. Русского литературного просто не существовало в то время, и, как я уже сказал, первым человеком писавшим, и, собственно, "изобревшим" то, что лягло в основу современного русского языка был Ломоносов, опять же, учившийся в Киеве.
                              Ответить
                              • Я не понимаю, что вы хотите всей этой писаниной доказать. Как всё это относится к тому, что я писал? Привели набор разрозненных фактов, не имеющих отношение к тому, что я писал.
                                Я говорил про современный литературный украинский (внимательно смотреть на слова "современный" и "литературный"), он куда удалённее от книжной речи 17 века, чем совр. литературный русский, который многие аспекты традиции сохранил. Достаточно просто иметь знакомство с русской литературой вплоть до древнерусской.
                                Ответить
                              • >Русского литературного просто не существовало в то время
                                Я и не утверждал этого. Я вообще-то писал о том, что литературным с 10 века являлся церковнославянский, на котором на территории России писали официальные документы, сочинения и т.д. вплоть до Пушкина.На Украине же сдвиг в сторону народного языка начался куда раньше, после назначения т.н. западнорусского языка официальным в ВКЛ. Это была искусственная смесь народных элементов (отчего он и назывался "проста мова" самим же местным населением) и польских слов (чтобы казаться официальнее и умнее). В русском же языке такая традиция не прерывалась, и церковнославян. дольше имел влияние, таким образом преемственности больше. Поэтому, напр., в старославянском имеем възвращатися, в русском имеем возвращаться, а в украинском -- повертатися. И таких примеров просто бесконечное множество: старослав.

                                Вы же мне тут про первые книги и академии талдычите.

                                >Первые книги на "русском" - теперешнем украинском языке были напечатаны в Галиции (Иваном Федоровым, опять же, украинцем),
                                Очередная ложь, те первые книги были церковного содержания и были написаны церковнославянским, который, ещё раз повторяю, никакого отношения к совр. лит. украинскому не имел и не имеет.
                                Да и славным он был украинцем (что есть анахронизм), который имел белорусские корни и подписывался "Фёдор из Москвы".
                                Знатно вам там на Украине мозги пропагандой-то проели.
                                Ответить
                                • Да чего вы уперлись в современный украинский язык, я вам говорю про средневековый и про историю. Ну а то, что вы строите свое представление о языке на том, что было написано Белоконем и Ко. не имеет к этому отношения. Потому, что писалось на заказ и безо всякой связи с историей.
                                  И если Федоров не был уркаинцем, то Пушкин тогда алжирец, или откуда там у него предки. Учился в Польше, работал на Украине. Какая разница, где родился? Тем более никто толком и не знает где.
                                  Вся средневековая литература была церковного содержания - к чему вы это говорите?
                                  Я работал (практикант) в Львовском городском архиве, когда учился на полиграфиста, занимался копированием старых документов. И безо всяких сомнений могу утверждать, что язык документов до последнего периода оккупации не менялся, за исключением естесственного развития. Т.е. менялись шрифты и мода на оформление, какие-то обороты в речи, но это был тот же самый язык, что и в грамоте гарантировавшей магдебургское право, что и в последующих документах, метриках и т.п. Естесственно, за исключением других документов, которые писались на польском / немецком и т.д.
                                  Ответить
                                  • Вы отказываетесь понимать, что я говорю, и опять говорите левые вещи, не имеющие к вопросу отношения. Я уже устал повторять. Книжная традиция с 9 века была церковнославянская, т.е. южнославянская. И такой была на территории России и большой части Украины вплоть до 17-18 веков. Западноруссский язык, который вы наверное видели во Львове, зародился позже, около 14 века, в крошечной области на западе, как результат вхождения в литовско-польское государство. Непонятно каким образом письменный язык крошечного западного княжества (даже не Киев) является самым верным и самым правильным. По всей Руси была диглоссия: или церковнослав., или местный диалект (по умолчанию разговорно-просторечное в противопоставление церковному), и поляки как католики поощряли местный диалект (ибо не связан с православием), который впоследствии трансформировался в письменный язык. Везде же большинство потомков восточнославян использовали церковнославянский как литературный язык.
                                    И таким образом я утверждал, что русский литетарурный имеет больше общего с литературной традицией Руси, чем современный литературный украинский, который давно прервал традицию. В русском по факту очень много церковнославянских выражений и грамматических форм, которых в совр. украинском не было и нет. Вот и всё. Вы же всё что-то о другом. У вас какое-то укрофанатство. Могу успокоить тем, что русский литературный язык был зарождён в Киеве 9 века, а в Московии было элитно гхекать вплоть до 17 века (традиция со времён единой Руси, опять же к совр. Украине и совр. укр. польско-разговорному суржику со Львова отношение не имеющие).
                                    Ответить
                                    • Крошечаная область? Что за бред? - это бОльшая часть современной Украины, включая все ее исторические столицы и т.д. Это та же область, которая унаследовала то, что осталось от русских князей, т.е. государственную структуру и все, что было связано со страной до татаро-монгольского нашествия. Потомки этих людей искали союза с поляками и литовцами против общего противника - так и образовалось государство. Так исторически получилось, что не смотря на то, что князья были родом из Литвы, столица и вообще центр развития переместился в Польшу, но до короля Ягелло украинцев не притесняли, а с приходом Казимира и Владислава, которые все больше перемещали центр в Польшу и, вобщем, пытались вести захватнические войны на нескольких направлениях, ситуация ухудшилась, и, особенно, в виду религиозных разногласий. Что и привело к посдеующим "козацким" восстаниям. Опять же, это все происходило в этой самой крошечной области, а "настоящая" украинцы, очевидно, в это время жили в Рязани.

                                      И я как бы не украинец, и не патриот. Полиграфических институтов в совке было всего 2, так что особо выбирать не из чего было.
                                      Вы не понимаете что такое "современный украинский" - это как раз язык которого никогда не было, его придумали в прямом смысле этого слова, продолжая имперскую традицию, которая должна была как-то объяснить почему "великоросы" являются всем старшими братьями. Придуман он был непосредственно Белоконем, главным редактором "сталинского" словаря украинского языка. Возможно, глупо его винить т.как время было такое, но, изза того, что Сталин решил сделать диссертацию на истории Украины ничего не зная ни про историю ни про Украину, это похерило предмет на длогие годы.
                                      Украинский язык ни разу не диалект, как вы тут смело заявляли. Это самостоятельный язык. Русские, или кто либо другой никогда не учили украинцев их языку, они на нем разговаривали так сколько себя помнят. То, что он в плачевном состоянии сегодня - ну так большинство известных языков мертвые, и это к лучшему.
                                      Ответить
                                      • >Украинский язык ни разу не диалект, ни разу не диалект, как вы тут смело заявляли. Это самостоятельный язык.

                                        Ну что в лоб, что по лбу. Повторяю опять -- я нигде не заявлял, что украинский язык -- диалект русского. В лингвистике вообще-то нет научного критерия, чтобы можно было точно сказать: вот это 100% диалект, а это 100% язык. Лингвисты обычно пользуются принятой традицией, а традиция эта обычно политически мотивирована (напр., между сербским и хорватским разницы почти нет, но считаются разными языками по политическим причинам). Так вот, когдя я употреблял слово "диалект", то я имел в виду его более научное понятие, то есть "диалект восточнославянской языковой общности". Западнорусский сформировался из просторечных диалектов Западной Украины. В Москве тоже были свои просторечные диалекты. Но литературным, высоким, языком на Руси ещё с 10 века считался исключительно церковнославянский, импортированный из Македонии диалект. И на части совр. Украины к 15 веку прервали эту традицию, сделав литературным языком местный диалект восточнославянской языковой общности, который до этого считался просторечным относительно к церковнославянскому (не к московскому русскому -- повторяю для глупых, потому как он тоже считался просторечным). В Москве же "народные" элементы из местных диалектов в высокую, официальную, литературную речь стали внедрять только после Пушкина, и очень неохотно, благодаря чему русский лит. язык теперь на добрую половину -- церковнославянского происхождения. Таким образом, я утверждал мой тезис о прерванной литературной традиции на Украине и более-менее сохранённой в России (что больше связывает совр. русский язык с языком образованной Древней Руси).
                                        Ответить
                                      • Далее, вы говорите, что совр. украинский -- это всё не то, а разговорный украинский -- это самое то. Ну так а я-то про что говорил всё время? Я говорил про прерванную/сохранённую книжную традицию, а вы мне теперь про разговорный украинский. Я же не спорил, что разговорный украинский всегда существал. Я вам про лингвистику, вы мне всё про историю и казаков. Если казаки боролись против москалей, значит они все исконно-посконно говорили на диалекте Львова? Ага, счас. Большая ошибка нелингвистов это приравнивать язык и народность. В общем, я вам про Фому, вы мне про Ерёму Сталина.


                                        И к тому что только процентов 10% украинцев может говорить на правильном литературном украинском -- в этом причина не полностью лежит на злом правительстве москалёв. Просто насаждаемый вариант книжного языка реально мало где использовался, но теперь все делают вид, что во всём виноват козёл отпущения из Москвы. Сравните ситуацию с Россией -- все говорят относительно литературно, т.е. нет никаких "суржиков" -- при том что диалектов у нас тоже было куча. Это потому что русский литературный язык подкреплён реальной длительной книжной традицией, с которой были знакомы во всех княжествах, в том числе на части территории совр. Украины (в отличие от западнорусского, которой стал основой совр. лит. украинского).
                                        Ответить
                                        • Лол хохлосрач на гкоде, да еще в разделе жаба.
                                          У вас всех ЛЕТИЩЕ.
                                          Продолжайте...
                                          Ответить
                                          • Это не хохлосрач, я не нигде не утверждал, что хохлы недолюди и что украинский -- диалект русского. Это скорее wvxvw разводит москалесрач. Я просто не мог не пройти мимо вопиющей дезинформации.
                                            Ответить
                                  • >Учился в Польше, работал на Украине. Какая разница, где родился? Тем более никто толком и не знает где.
                                    Ну вы так легко анахронистически всех называете украинцами кто жил на территории совр. Украины, противопоставляя русским. А сейчас на попятную вдруг пошли: "какая разница?"Поправочка: он работал не на Украине, а в Литовском княжестве. По логике поцреота-литовца он литовец. Я уверен. Не смотря на что он подписывался "Фёдор из Москвы" и "Фёдор из Великой Руси". И не смотря на то, что книги он печатал на церковнославянском, это конечно же был всё был украинский.
                                    Ох же ж лол.
                                    Ответить
                          • Вы это имели в виду (мои познания в совр. лит. укр. не сильны):

                            Г. Сковорода: В седмом десяткЂ нынЂшняго вЂка, отстав от учителской должности и уединяясь в лежащих около Харькова лЂсах, полях, садах, селах, деревнях и пчелниках, обучал я себе добродЂтели и поучался в бібліи

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

                            Украинский: У сьомому десятку нынiшнього вiку, вiдставши вiд учительськоi посади й залишаючися на самотi в лicах, полях, садах, селах i бджолниках, що лежать бiля Харкова, навчал я себе доброчесностi та повчался в бiблii.

                            :D :D
                            Ответить
                            • Сковорода в современной литературе? Или Драгоманов? Вы в каком веке, простите, живете? А что не так с цитатой?
                              Вы бы еще украинский по словарю Белоконя сравнивали, так там и не такое сходство найдется. Или, наоборот, Плачинды.
                              Вы, если и были лингвистом, то у вас либо родственники были на кафедре, либо на халяву зачеты ставили. Вы сравнивает то, что прошло множество изменений и делаете выводы на основании одной цитаты. Таким же образом можно русский вывести из татарского и причислить к тюркской группе, например. При чем для этого, объективно, есть множество оснований (естесственно, не оправданных, но если считать заимствования, то можно и к такому выводу прийти).
                              Ответить
                              • Это не одна цитата, дурачок. Я просмотрел кучу текста, это всё стандартный церковнославянский восточногославянского извода, ничего не имеющий общего с совр. лит. украинским. Не нашёл ни единого украинизма по тем ссылкам (штук 10), которые видел. При этом скан был по изданию с Украины.
                                Я так и не понял, что ты там Сковородой хотел доказать в отношении совр. лит. украинского.
                                Ответить
                        • Или вон у меня в посту яркий старославянизм: чуждый.

                          Старослав.: чуждъ, чуждыи
                          Рус. чуждый, чужой
                          Укр. чужий

                          (тут ещё один момент -- в русском таким образом двухъуровневая лексика (см. 2 слова), в отлич. от более бедного украинского).
                          Ответить
              • Украинский - диалект белорусского, мне кажется.
                Ответить
          • >Вах, и вправду голландский
            штурвал
            Ответить
    • показать все, что скрытоКГ/АМ! (спойлер: ОП - ХУЙ!)
      Ответить
    • IO в Java, честно говоря, какой-то дурацкий. Когда больше половины кода это лесенки обработки исключений.
      Ответить
      • Добрая половина стандартной либы в жаве, не то что дурацкая. Это вообще откровенно антиюзабельное барахло. Тот же JDBC.
        Выход - самому написать удобные обертки / юзать либы где кто-то сделал за тебя.
        Ответить
        • я заметил, что стандартные либы или api - обычно жутко неюзабельные - вспомнить тот же DOM. предполагаю, это потому, что создается тупо минимальная обертка над низлежащей платформо-зависимой функциональностью (тот же пых). удобство - удел third-party библиотек.
          Ответить
          • Ну в отношении IO в Java, например всё дело в исключениях, которые нельзя игнорировать, и в их лесенчатой архитектуре, при которой разный функционал размазан по разным классам, которые нужно обёртывать друг в друга как матрёшки. Три как минимум (как в примере выше). Это конечно всё очень здорово, но во многих случаях хотелось бы компактный класс. И ладно там, скажем, исключение открытия файла (не найден). Так они повесили исключение даже на метод close(). Т.е. правильно написанный код должен иметь try...finally... над открытием файла, затем в finally ещё одно внетруннее try...finally... оборачивающее close(). Т.к. никто не хочет засирать интерфейс throws'ами и никому не надо ловить исключения, которые гарантированно не появятся, нужно ещё в каждом случае писать catch с логгированием. И того: чтение файла - одна строка. Остальное -- строк 10 всякого бесполезного мусора, при том что я уверен, что файл должен быть на диске, а если его нет -- то это критическая ошибка завершения программы.
            Ответить
            • >Так они повесили исключение даже на метод close()
              В JDBC тоже. Только там надо закрыть ResultSet, Statement и Connection.
              Нетрудно посчитать сколько try нам нужно.
              Ответить
              • Вот и приходится их Closables.closeSilently(resource);
                Ответить
                • То известно :) Но либа-то внешняя.
                  И вообще они мудаки. Могли б уже давно Closeable ко всему имеющему метод close() прикрутить.
                  Я себе такой же метод написал, но с varargом и рефлексией.
                  Ответить
                • > closeSilently
                  Если речь о Commons DbUtils, то там 3 метода ResultSet, Statement и Connection соответственно.
                  Если речь о Guave - то там закрывается Closeable - тоже отстой.
                  Единственный способ (в жабах до 7-ой) - рефлексия. А в седьмой оно особо не надо, ибо запилили autoclose.
                  Ответить
                  • Можно ещё пару адаптеров написать, которые оборачивают в Closable нужные ресурсы (MyClosables.asClosable(...)), и тогда не нужно будет дёргать тормозную рефлексию.
                    Ответить
                    • Насрать на тормоза. Главное - универсально. Сомневаюсь, что close станет бутылочным горлышком всего приложения.

                      >Адаптеров написать, которые оборачивают в Closable нужные ресурсы
                      Typical problem solution in java.
                      Ответить
                      • > Typical problem solution in java
                        В принципе, кода не так много, у меня получилось около 40 строк:
                        http://ideone.com/Z0vNR
                        Ответить
                    • Проще перегрузку методов использовать (n-методов на n типов), чем городить адаптеры.
                      И вообще говнорешение багов в говнодизайне стандарной говнолибы стандартными говнометодами говноязыка.
                      Ответить
                      • После всего этого с теплом вспоминаются лисповские и питоновские with... И даже деструкторы из с++... Но в жабе нет ни лямбд ни деструкторов. Только ООП, только пачки try..finally, только хардкор.
                        Ответить
                        • ещё с теплом вспоминается скаловский structural subtyping
                          http://govnokod.ru/8143#comment113248
                          Ответить
                    • ProblemFactory.create("Closeables")
                      Ответить
                    • Лучше так: new FixedClosableAdaptorFactory().generateCl osableAdaptor(file).closeSilently()
                      Ответить
            • Так мало того, в IO еще есть такая штука как flush.
              Несмотря на autoflush иногда без неё может ниче не работать.
              Следовательно перед close надо сделать flush, который тоже бросает exception.
              А Flushable ввели только в 1.5 Радует, что хоть он вменяемый.
              Ответить
              • >А Flushable ввели только в 1.5 Радует, что хоть он вменяемый.
                Хм, а чем Flushable отличается Closable? Гляжу в доки -- тот же один метод на интерфейс, тот же throws IOException.
                Ответить
                • К.О. подсказывает, что позле flush объектом ещё можно пользоваться, а вот после close уже нельзя
                  Ответить
                  • >а вот после close уже нельзя
                    И в чём тут невменяемость? По логике же и правильно. Хотите читать из закрытого файла?

                    Или имеете в виду наличие throws? Мол, close говорит о том, что нам плевать на файл, можно все исключение по идее игнорировать?
                    Ответить
                  • А java не делает flush во время close?
                    Ответить
                    • Зависит от реализации потока. Абстрактный класс OutputStream не имеет никакой логики ни во flush, ни в close. А его наследники могут поступать по своему усмотрению, к примеру, BufferedOutputStream делает flush при вызове close. По умолчанию потоки не буферизуются, решили, что эта фича должна быть реализована через декоратор (BufferedOutputStream).
                      Ответить
    • показать все, что скрытоПервый нах!
      Ответить
    • "het hollandse roer"
      Ответить

    Добавить комментарий