nie działa: List l=new ArrayList();
Nie moge utworzyć obiektu tylu listy. Kompilator zachowuje się jakby List nie było interfejsem dla ArrayList a podobno jest.
co dziwniejsze nie pokazuje nic dla: List l=new List();(ale to chyba dlatego że traktuje to jako składową java.Applet.*)
po wprowadzeniu pełnych ścieżek wszystko gra java.util.List<Snow> snow1 = Arrays.asList(new Crusty(), new Slush(), new Powder());
da się temu zaradzić?
używam eclipse pod linuxem jdk 1.6.0_03
//: holding/AsListInference.java
// Arrays.asList() makes its best guess about type.
import java.util.*;
class Snow {}
class Powder extends Snow {}
class Light extends Powder {}
class Heavy extends Powder {}
class Crusty extends Snow {}
class Slush extends Snow {}
public class AsListInference
{
public static void main(String[] args)
{
List<Snow> snow1 = Arrays.asList(new Crusty(), new Slush(), new Powder());// <===== Blad
//Wypisuje komunikat: "the type is not generic. It can not be parametrized with argument <Snow>"
//wydaje mi sie ze jedno zdanie zaprzecza drugiemu
// Won't compile:
// List<Snow> snow2 = Arrays.asList(
// new Light(), new Heavy());
// Compiler says:
// found : java.util.List<Powder>
// required: java.util.List<Snow>
// Collections.addAll() doesn't get confused:
List<Snow> snow3 = new ArrayList<Snow>(); // <=== Blad
Collections.addAll(snow3, new Light(), new Heavy());
// Give a hint using an
// explicit type argument specification:
List<Snow> snow4 = Arrays.<Snow>asList(new Light(), new Heavy()); // <=== Blad
}
} ///:~
Źródło "Thinking in Java" wydanie 4 s.338