2016-07-13 18 views
1

Ich las Java Generics und ich stieß auf ein Problem mit einem Array füllen.Füllen eines Arrays mit <?> Typ

Gen<?> array[] = new Gen<?>[10]; 

for (int i = 0; i < array.length; i++) { 
     array[i] = (Integer) (i+3); 
    } 
    for (int i = 0; i < array.length; i++) { 
     System.out.print(array[i] + " "); 
    } 
} 

Compiler sagt diesen Fehler: inkompatible Typen: Integer kann nicht in gen konvertiert werden.

Die Frage ist, wie man das Array füllt oder informiert, was ich in dieser Situation hineinlege? Vielen Dank.

+0

Das liegt daran, 'Integer' ist kein' Gen'. Was versuchst du zu erreichen? –

+0

Wenn Sie wissen, dass Sie Ganzzahlen in das Array einfügen, deklarieren Sie das Array einfach als "Gen". Wenn Sie mehr Flexibilität benötigen, verwenden Sie Sammlungen anstelle von Arrays. – Makoto

Antwort

0

Ich weiß nicht, Ihre Anforderung, sondern unter Code könnte Ihnen helfen zu verstehen, wie es funktioniert -

DataTypes.java

public class DataTypes { 
    public static void main(String[] args) { 
     Gen<?> array[] = new Gen<?>[10]; 
     for (int i = 0; i < array.length; i++) { 
      array[i] = new Gen<Integer>(i); 
     } 
     for (int i = 0; i < array.length; i++) { 
      System.out.print(array[i].getData() + " "); 
     } 
    } 
} 

Gen.java

class Gen<T> { 
    T data; 

    public Gen(T data) { 
     this.data = data; 
    } 

    public T getData() { 
     return data; 
    } 
} 
0

Eigentlich können Sie nichts generischen Typs instanziieren. So können Sie versuchen, Objekt-Arrays zu schaffen, wo Sie werfen, was Sie hinzufügen:

private Object[] tees; 

public void addAll(T... objects) 
{ 
    tees = new Object[objects.length]; 
    for (int i = 0; i < objects.length; i++) 
     tees[i] = objects[i]; 
} 

@SuppressWarnings("unchecked") // when you cast without checking 
public T[] getTees() 
{ 
    return (T[]) tees; 
} 

Auch, was Sie fragen scheint seltsam zu mir; es kann aus dem Zusammenhang genommen werden, sicher, aber Sie können einige Konzeptionsprobleme haben.

Verwandte Themen