🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #15762

Re: pl.comp.objects FAQ (Frequently Asked Questions and more)

#15762
From: Sektor van Skijlen
Date: Wed, 02 Apr 2008 08:04
39 lines
3656 bytes
Dnia Wed, 02 Apr 2008 09:54:47 +0200, Piotr Kobzda skrobie:
> Sektor van Skijlen wrote:
> > Dnia Tue, 01 Apr 2008 19:39:25 +0100, Radoslaw Jocz skrobie:
> >>> wartościowy String jest w Javie zrobiony jako niewartościowy - przez co Java
> >>> jest do dziś chyba jedynym językiem, w którym jedynym bezpiecznym sposobem
> >>> sprawdzenia, czy string s jest niepusty, jest:
> >>>
> >>> if ( !"".equals( s ) )
> > 
> >> niekoniecznie lepiej wyglada tak: s.equals("")
> >> albo w ogole s.isEmpty()
> > 
> > Ładniej wygląda, oczywiście, tylko ma paskudną wadę - jeśli s jest null to
> > rzuca NullPointerException.

> Dlaczego paskudną?  Ja zwykle właśnie NPE rzucam gdy mam nieoczekiwanego 
> nulla, a dzięki s.equals("") mam oczekiwany efekt za darmo.

Problem polega właśnie na tym, że wyjątki, jako forma Runtime Error, objawiają
się dopiero w działaniu. Rozumiem, że możesz chcieć, aby taki wyjątek właśnie
wystąpił, ale musisz mieć pełną świadomość tego, że tak właśnie jest.

Natomiast w Javie - podobnie jak w języku C - w większości przypadków null
traktuje się jak pusty string (właśnie dlatego, że możliwość bycia przez
string null-em jest nadmiarową i nieużywaną właściwością, w wyniku czego
jedynie sprawia problemy). Znalazłem co prawda w bibliotece standardowej kilka
przypadków, kiedy podanie null zamiast stringa traktowano jako określony
szczególny przypadek - ale wszędzie tam ową szczególność można było zaznaczyć
inaczej, natomiast w większości przypadków jak przyjmujemy w metodzie stringa,
to chcemy dostać stringa, a nie null.

W Javie, podobnie jak w języku C, zapewnienie tego jest niemożliwe. Już nawet
w bazach danych się da.

-- 
//  _    ___         Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl>
\\ L_ |/ `|  /^\ ,()                         <ethouris(O)gmail.com>
// \_ |\  \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx
"Java is answer for a question that has never been stated"
Technical Details
Message-ID: <fsvemk$tdn$2@mail-hub.man.lodz.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.man.lodz.pl!not-for-mail
References: <pl-comp-objects-faq-1-1166202604@ict.pwr.wroc.pl> <esfchn$t5r$1@kujawiak.man.lodz.pl> <esgboi$8i2$2@bandai.magma-net.pl> <esi2kk$skh$2@kujawiak.man.lodz.pl> <esi6uk$4mt$1@bandai.magma-net.pl> <esmu4p$ii1$2@kujawiak.man.lodz.pl> <esn1nl$7q7$1@bandai.magma-net.pl> <esv08v$o5d$1@kujawiak.man.lodz.pl> <et6pse$eab$1@bandai.magma-net.pl> <et7emm$cf1$1@kujawiak.man.lodz.pl> <etak85$krq$1@bandai.magma-net.pl> <eteh83$he8$1@kujawiak.man.lodz.pl> <pan.2007.03.16.21.49.44.873488@go2.pl> <etkgvt$2b$1@kujawiak.man.lodz.pl> <pan.2007.03.19.01.18.29.79961@go2.pl> <fmm5kd$nt4$1@kujawiak.man.lodz.pl> <fstvgr$njs$1@inews.gazeta.pl> <fsud9c$t6v$2@mail-hub.man.lodz.pl> <fsve48$4bp$1@inews.gazeta.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.man.lodz.pl!not-for-mail
From: Sektor van Skijlen <ethouris@guess.if.gmail.com.is.valid.or.invalid>
Newsgroups: pl.comp.objects
Subject: Re: pl.comp.objects FAQ (Frequently Asked Questions and more)
Date: Wed, 2 Apr 2008 08:04:36 +0000 (UTC)
Organization: LODMAN - Metropolitan Area Network in LODZ, Poland
Lines: 39
Sender: Michal Malecki <sektor@student.kis.p.lodz.pl>
Message-ID: <fsvemk$tdn$2@mail-hub.man.lodz.pl>
References: <pl-comp-objects-faq-1-1166202604@ict.pwr.wroc.pl> <esfchn$t5r$1@kujawiak.man.lodz.pl> <esgboi$8i2$2@bandai.magma-net.pl> <esi2kk$skh$2@kujawiak.man.lodz.pl> <esi6uk$4mt$1@bandai.magma-net.pl> <esmu4p$ii1$2@kujawiak.man.lodz.pl> <esn1nl$7q7$1@bandai.magma-net.pl> <esv08v$o5d$1@kujawiak.man.lodz.pl> <et6pse$eab$1@bandai.magma-net.pl> <et7emm$cf1$1@kujawiak.man.lodz.pl> <etak85$krq$1@bandai.magma-net.pl> <eteh83$he8$1@kujawiak.man.lodz.pl> <pan.2007.03.16.21.49.44.873488@go2.pl> <etkgvt$2b$1@kujawiak.man.lodz.pl> <pan.2007.03.19.01.18.29.79961@go2.pl> <fmm5kd$nt4$1@kujawiak.man.lodz.pl> <fstvgr$njs$1@inews.gazeta.pl> <fsud9c$t6v$2@mail-hub.man.lodz.pl> <fsve48$4bp$1@inews.gazeta.pl>
NNTP-Posting-Host: student.kis.p.lodz.pl
Mime-Version: 1.0
X-Trace: mail-hub.man.lodz.pl 1207123476 30135 212.191.89.21 (2 Apr 2008 08:04:36 GMT)
X-Complaints-To: abuse@man.lodz.pl
NNTP-Posting-Date: Wed, 2 Apr 2008 08:04:36 +0000 (UTC)
User-Agent: tin/1.8.3-20070201 ("Scotasay") (UNIX) (FreeBSD/6.2-RELEASE-p3 (sparc64))
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit