abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:11 | Nová verze

    The Document Foundation oznámila vydání nové major verze 25.8 svobodného kancelářského balíku LibreOffice. Podrobný přehled nových vlastností i s náhledy v poznámkách k vydání (cs) a také na Youtube a PeerTube.

    Ladislav Hagara | Komentářů: 0
    dnes 04:00 | Nová verze

    Zeek (Wikipedie), původně Bro, byl vydán v nové major verzi 8.0.0. Jedná se o open source platformu pro analýzu síťového provozu. Vyzkoušet lze online.

    Ladislav Hagara | Komentářů: 0
    včera 23:55 | Zajímavý software

    Emacs na stříhání videa? Klidně.

    Ladislav Hagara | Komentářů: 3
    včera 15:55 | Nová verze

    Byl vydán Mozilla Firefox 142.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 142 je již k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    včera 13:22 | Zajímavý článek

    Python Developers Survey 2024, výsledky průzkumu mezi vývojáři v Pythonu organizovaném Python Software Foundation ve spolupráci se společností JetBrains v říjnu a listopadu loňského roku. Zúčastnilo se 30 tisíc vývojářů z 200 zemí. Linux používá 59 % z nich.

    Ladislav Hagara | Komentářů: 0
    včera 04:00 | Zajímavý článek

    Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.08.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.

    Ladislav Hagara | Komentářů: 2
    včera 01:55 | Nová verze

    Byla vydána nová verze 2.51.0 distribuovaného systému správy verzí Git. Přispělo 91 vývojářů, z toho 21 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 1
    včera 01:33 | Zajímavý článek

    Po roce bylo vydáno nové číslo magazínu Phrack: Phrack 72.

    Ladislav Hagara | Komentářů: 3
    18.8. 19:33 | Pozvánky

    OpenSSL Corporation zve na den otevřených dveří ve středu 20. srpna v Brně a konferenci OpenSSL od 7. do 9. října v Praze.

    Ladislav Hagara | Komentářů: 4
    18.8. 19:22 | Komunita

    Konference LinuxDays 2025 proběhne o víkendu 4. a 5. října v Praze. Konference OpenAlt 2025 o víkendu 1. a 2. listopadu v Brně. Blíží se konec přihlašování přednášek. Přihlaste svou přednášku (LinuxDays do 31. srpna a OpenAlt do 3. října) nebo doporučte konference známým.

    Ladislav Hagara | Komentářů: 0
    Pro otevření více webových stránek ve webovém prohlížečí používám
     (80%)
     (8%)
     (8%)
     (0%)
     (4%)
     (0%)
    Celkem 25 hlasů
     Komentářů: 4, poslední včera 16:48
    Rozcestník

    Dotaz: Java-ArrayList bez typového parametru

    13.6.2018 10:30 Elka
    Java-ArrayList bez typového parametru
    Přečteno: 1890×

    Pokud mám nějaké dvě nesouvisející třídy A,B a udělám toto:

    ArrayList list=new ArrayList();

    list.add(new B());

    Jak je možné, že mi to projde a bude fungovat, když jsem v konstruktoru toho ArrayListu zadala typový parametr A?

    Odpovědi

    13.6.2018 10:56 rtfm
    Rozbalit Rozbalit vše Re: Java-ArrayList bez typového parametru
    https://docs.oracle.com/javase/tutorial/java/generics/erasure.html

    ArrayList<X> je stále to samé jako ArrayList, akorát si tam kompilátor při vybírání hodnot z něj domyslí typecast Object -> X . Co neprojde je naplnit ArrayList hodnotama typu A a pokusit se z něj vybrat B. To spadne za běhu s výjimkou.
    13.6.2018 11:21 Elka
    Rozbalit Rozbalit vše Re: Java-ArrayList bez typového parametru
    Omlouvám se, ale špatně jsem to napsala. U toho ArrayListu jsem měla na straně konstruktoru <A>, omylem se to však interpretovalo jako tag <A> pro web...
    13.6.2018 12:03 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: Java-ArrayList bez typového parametru
    Protože tohle udělá syrový list (bez ohledu na typový parametr na pravé straně):
    List l = new ArrayList<A>();
    
    zatímco vy chcete asi toto:
    List<A> l = new ArrayList<>();
    
    což je ekvivalent tohoto:
    List<A> l = new ArrayList<A>();
    
    Jinými slovy jste přidávala do syrového listu, měla byste dostat varování. Pokud máte javu 9 (nebo 10) můžete pro rychlé testování (nejen) těchto věcí použít jshell, vypadá to pak nějak takto (všimněte si, že dostáváte varování v případě A i B):
    jshell> class A extends Object {}
    |  created class A
    
    jshell> class B extends Object {}
    |  created class B
    
    jshell> List l = new ArrayList<A>();
    l ==> []
    
    jshell> l.add(new A());
    |  Warning:
    |  unchecked call to add(E) as a member of the raw type java.util.List
    |  l.add(new A());
    |  ^------------^
    $4 ==> true
    
    jshell> l.add(new B());
    |  Warning:
    |  unchecked call to add(E) as a member of the raw type java.util.List
    |  l.add(new B());
    |  ^------------^
    $5 ==> true
    
    
    -- OldFrog

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.