Jak mówi javadoc, nie musisz potrzebować, aby się spłukać. Ale nadal dobrze jest robić, biorąc pod uwagę swoich czytelników i zdrowy rozsądek.
Niewielu ekspertów zna javadoc na pamięć. Nie wiem na pewno, czy strumień zostanie przepłukany, czy nie, bez sprawdzania go, i prawdopodobnie nie jestem sam. Zobacz wyraźne wywołanie flush()
czyni to doskonale jasne, , a zatem sprawia, że kod jest łatwiejszy do odczytania.
Ponadto nazwa metody close()
oznacza nic o spłukiwania. To z interfejsu Closeable
, i oczywiście nic nie mówi o spuszczaniu wody. Jeśli nie wylewać buforowany strumień wyjściowy przed zamknięciem, mimo chcąc go opróżnić, będziesz opierając się na założeniach, które mogą lub nie mogą być prawdziwe. Osłabiłoby to wdrożenie.
Wszelkie założenia można zrobić, trzeba jakoś przekazać przyszłych opiekunów. Jednym ze sposobów na to jest za pozostawienie komentarza:
// no need to flush() manually, close() will do it automatically
Jeśli ten komentarz nie opuszczają, przyszli opiekunowie mogą mieć do wyszukiwania Javadoc też jeśli tak jak ja don” Zapamiętaj to. Ale dlaczego miałbyś pisać taki komentarz, kiedy łatwiej i lepiej po prostu nazwać to teraz sobą i skończyć z tym.
W skrócie, zaczerwienienie pierwszy przed zamknięciem jest po prostu dobrą logiki. Nie ma potrzeby przyjmowania założeń i drugiej domysły, i nie musisz myśleć o swoich czytelnikach.
IMO, nie, ale to nie znaczy, że to dobry pomysł :-) po przełączeniu z Writer bądź OutputStream wdrożenia, może skończyć posiadające nieoczekiwane zachowanie, jeśli nie wylewać te, które jej potrzebują. Możesz argumentować, że posiadanie jakiegoś bezużytecznego koloru() to zły projekt JVM, wtedy moja odpowiedź brzmi "może" :-) Kolejną rzeczą, którą możemy zbadać, jest kompatybilność wsteczna, jeśli poprzednie wersje JVM działają również bez spłukać(). – Leo
O co dokładnie pytasz, co nie jest objęte pytaniem, z którym się łączysz? – jarnbjo
@jarnbjo, Po prostu muszę wiedzieć, czy jest to tylko nieaktywny exec pracy, który jest tylko ściśle przestrzegać zasady? – Jaskey