Názor k článku Novinky v JDK 7 aneb mírný pokrok v mezích zákona (2) od Petr Balat - No promiňte, ale jak koukám na tu diskuzi...

  • Článek je starý, nové názory již nelze přidávat.
  • 23. 11. 2010 15:22

    Petr Balat (neregistrovaný)

    No promiňte, ale jak koukám na tu diskuzi tak si nikdo i včetně autora článku nikdo nevšiml (tragikomedie je že to neví i lidi z coinu:-( ) že v části 5. Je operátor <> skutečně nezbytný a/nebo dostatečně obecný?
    má chybu a to takovou že lze zapsat... viz jednoduchý test:

    //kompilováno pod jdk6, javac kompilátor pouze upozorní na potenciální //unsafe operaci
    public class CollectionTest {

    @Test
    public void testType() {
    List<String> list = new ArrayList();
    List<List<String>> list2 = new ArrayList();
    List<List<Lis­t<String>>> list3 = new ArrayList();
    Map<String, Collection<In­teger>> map = new LinkedHashMap();

    //list.add(new Integer(1));//nejde zkompilovat
    list.add(Strin­g.valueOf("he­llo"));//toto jo

    //list2.add(new Integer(2));//nejde zkompilovat
    list2.add(new ArrayList());//toh­le jo ! všimně te si že se nekontroluje typ !!!

    List beztypovyList = list;
    beztypovyList­.add(new Integer(3)); //tohle projde i s tím pitomým diamantem!!!

    //tohle projde
    for (Object object : beztypovyList) {
    System.out.prin­tln(object);
    }

    //tohle NEprojde ale spadne ! a spadne to i s tím pitomým diamantem!!!
    for (String object : list) { //java.lang.Clas­sCastException: java.lang.Integer cannot be cast to java.lang.String
    System.out.prin­tln(object);
    }
    }
    }