public class TestGenerics { public static ArrayList<Object> gl = new ArrayList<Object>(); public static <T> void add(ArrayList<T> l) { gl.addAll(l); } public static void main(String args[]) { ArrayList<String> l = new ArrayList<String>(); l.add("A"); l.add("B"); TestGenerics.add(l); ArrayList<Integer> l2 = new ArrayList<Integer>(); l2.add(1); l2.add(2); TestGenerics.add(l2); System.out.println(gl); } }
Hej Arne. Tak for dit svar. Her komme forklaringen på hvad jeg skal bruge det til. Jeg har lavet min egen ListModel som nu skal skrives om til generics (eller bare undgå at smide warnings). Min eksempelkode i spørgsmplet var ikke helt godt nok. Her er koden, og hvordan undgår jeg warnings på dette?
public class TestGenerics implements ListModel { public ArrayList gl = new ArrayList();
public void setListData(ArrayList l) { gl = l; }
public void add(Object o) { gl.add(0); }
public Object getElementAt(int index) { return gl.get(index); }
public int getSize() { return gl.size(); }
public void addListDataListener(ListDataListener l) {} public void removeListDataListener(ListDataListener l) {}
public static void main(String args[]) { TestGenerics tg = new TestGenerics(); ArrayList<String> l = new ArrayList<String>(); l.add("1"); l.add("2"); tg.setListData(l);
public class TestGenerics implements ListModel { public ArrayList<Object> gl = new ArrayList<Object>(); public <T> void setListData(ArrayList<T> l) { gl = new ArrayList<Object>(); gl.addAll(l); } public void add(Object o) { gl.add(o); } public Object getElementAt(int index) { return gl.get(index); } public int getSize(){ return gl.size(); } public void addListDataListener(ListDataListener l) {} public void removeListDataListener(ListDataListener l) {} public static void main(String args[]) { TestGenerics tg = new TestGenerics(); ArrayList<String> l = new ArrayList<String>(); l.add("A"); l.add("B"); tg.setListData(l); ArrayList<Integer> l2 = new ArrayList<Integer>(); l2.add(1); l2.add(2); tg.setListData(l2); } }
Jeg undre mig mere og mere over den warning. Følgende giver ingen warning, men tilføjer man add-metoden så får jeg warning. Hvorfor skal en add til en ikke-generisk liste giver en warning, og hvordan undgår jeg det?
Det er ikke type safe at adde til en ikke generisk ArrayList.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.