2017-05-11 8 views
0

Das Problem besteht im Wesentlichen darin, dass wir ein Array von Objekt-ArrayListen erstellt haben, weil wir nicht genau wissen, was wir dort später speichern werden, aber wir wissen, wie (wir müssen es machen Weg), so initialisiert die Standarderstellung auf der Konstruktormethode es als private List<Object> collection aber später einige Eingabe wird es ändern, sagen es zu einer Zeichenfolge, so sollte die AL auf der Position etwa wie collection[i] = new ArrayList<String>() sein, aber der Compiler sagt, dass ArrayList<String> cannot be converted into ArrayList<Object> sogar dachte ich bin mir ziemlich sicher, String, Integer, etc erben von der Klasse Objekt
Jeder kann mir sagen, was mache ich falsch?Ändern des Typs einer ArrayList

+0

was ist 'collection [i]' für? Einfach 'hinzufügen' zur Sammlung –

+0

Sammlung [] ist das Array, das mit ArrayLists gefüllt wird, aber sie weigern, Typen zu ändern –

+0

Warum nicht 'List ' in 'List ' '? Oder 'ArrayList ' zu 'ArrayList '? Sie müssen vom selben Typ sein, sonst müssen Sie Grenzen wie 'List '. – 4castle

Antwort

0

1) collection[i] ist ein Array

2), wenn Sie es so schreiben wollte:

List<Object> collection; collection = new ArrayList<String>();

Sie erhalten eine incompatible types: ArrayList<String> cannot be converted to List<Object>

Sie können nicht verdeckte String Objekt. Wenn Sie es wollen, müssen Sie es als eine Liste von Strings erstellen. Wenn Sie nicht wissen, welchen Typ Sie brauchen, erstellen Sie es einfach, wenn Sie es wissen. Wenn es der Benutzer ist, der es wählt, mache einen Schalter wie diesen:

switch (entry) { 
     case 1: { 
      List<String> collection = new ArrayList<>(); 
      break; 
     } 
     case 2: { 
      List<Integer> collection = new ArrayList<>(); 
      break; 
     } 
     case 3: { 
      List<Character> collection = new ArrayList<>(); 
     } 

    } 
Verwandte Themen