Article View: pl.comp.lang.java
Article #153902Re: Przesiadka z Delphi
From: Arivald
Date: Tue, 08 Oct 2013 19:51
Date: Tue, 08 Oct 2013 19:51
45 lines
2570 bytes
2570 bytes
W dniu 2013-10-08 21:10, Borneq pisze: > Użytkownik "Arivald" <arivald_@AT_interia_DOT_.pl> napisał w wiadomości > news:l30sgq$i0o$1@news.dialog.net.pl... >> A na generykach stracisz kupę czasu i szacunek dla twórców Javy ;-) >> Niestety Java ma jedną z najgorszych implementacji generyków, już od >> narodzin zepsutą przez wsteczną kompatybilność. > > A co jest złego w generykach Javy? czego nie można na nich zrobić? Podstawowa wada - zacieranie typu klasy generycznej. Np w Delphi TList<klasaA> i TList<klasaB> to są dwa różne typy. Podobnie jest w większości języków. w C++ te typy są nawet osobno kompilowane, z różnymi optymalizacjami. A w Javie List<klasaA> i List<klasaB> to jest dokładnie ten sam typ. Zresztą dokładnie ten sam kod jest wykonywany (nie "taki sam", ale dokładnie "ten sam"). Gdzie to przeszkadza? A na przykład przy przeciążeniu funkcji. W Jawie function void fun(List<klasaA> list); function void fun(List<klasaB> list); Mają tą samą sygnaturę, i przeciążenie jest niemożliwe. Albo mając function fun(List<T> list) nie jesteś w stanie stwierdzić jaką klasą jest T bez użycia refleksji. Dlatego używa się form z obowiązkowym przekazaniem klasy, np: function void fun(List<T> list, Class<?> clazz); A to wszystko tylko po to żeby generyczne kolekcje były kompatybilne ze starszymi niegenerycznymi API... Tak, do funkcji: function void fun(List list); ... możesz przekazać zarówno List<klasaA> jak i List<klasaB> i będzie działać. -- Arivald
Technical Details
Message-ID:
<l31ntb$uae$1@news.dialog.net.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mailReferences:
<l30php$ujq$1@news.task.gda.pl> <l30sgq$i0o$1@news.dialog.net.pl> <l31laa$eb6$1@node1.news.atman.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail From: Arivald <NOSPAMarivald@interia.pl> Newsgroups: pl.comp.lang.java Subject: Re: Przesiadka z Delphi Date: Tue, 08 Oct 2013 21:51:08 +0200 Organization: Dialog Net Lines: 46 Message-ID: <l31ntb$uae$1@news.dialog.net.pl> References: <l30php$ujq$1@news.task.gda.pl> <l30sgq$i0o$1@news.dialog.net.pl> <l31laa$eb6$1@node1.news.atman.pl> NNTP-Posting-Host: dynamic-78-8-13-180.ssp.dialog.net.pl Mime-Version: 1.0 X-Trace: news.dialog.net.pl 1381262059 31054 78.8.13.180 (8 Oct 2013 19:54:19 GMT) X-Complaints-To: abuse@dialog.net.pl NNTP-Posting-Date: Tue, 8 Oct 2013 19:54:19 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.0 In-Reply-To: <l31laa$eb6$1@node1.news.atman.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit