Wie Sie hinzufügen, wenn argument übergeben wird, werden als Generische ArrayList<?>
Ich habe eine Funktion, die eine generische ArrayList<?>
als einen der Parameter, und was ich gefunden habe ist, dass ich ein Java-Fehler, wenn ich versuche, verwenden Sie die add-Methode der ArrayList
keine geeignete Methode gefunden für "hinzufügen" (MyClass)
Was ich versuche zu erreichen, ist die übergabe von Parametern für eine Klasse und eine ArrayList und die Funktion haben, füllen der ArrayList mit Objekten der Klasse. Obwohl, wenn ich könnte stattdessen erstellen und wieder die ArrayList aus meiner Funktion, das wäre auch in Ordnung (eine weniger parameter wäre schön).
Hier ist etwas code zu zeigen, wie ich bin versucht derzeit, gehen über diese:
public void myFunction(Class clazz, ArrayList<?> myList)
{
Object myObject=null;
try{myObject = clazz.newInstance();}catch(Exception e){}
myList.add(myObject);
}
... oder vielleicht so etwas wie dieses:
public ArrayList<?> myFunction(Class clazz)
{
ArrayList<clazz> myList = new ArrayList<clazz>();
Object myObject=null;
try{myObject = clazz.newInstance();}catch(Exception e){}
myList.add(myObject);
}
Wenn jemand könnte, bitte:
a) zeigen Sie mir einige code, der dies tut
b) erläutern Sie, wie das zu erreichen ist mein Ziel die Verwendung von Generika
oder c) nur lassen Sie mich wissen, wohin ich gehe falsch und eine Alternative Möglichkeit
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre erste Methode behoben werden können, wie:
Die zweite als:
Hier
T
genannt ist ein Typ-parameter. Sie können jeden Buchstaben oder Bezeichner stattT
.um etwas zu ArrayList, die Sie brauchen, um Ihr Typ-definition kontravariant.
So etwas wie
funktionieren würde.
Können Sie eine
ArrayList<Object>
statt, wird diese ermöglichen es Ihnen, fügen Sie Objekte zu Ihrer Liste. Für Generika, es ist schwer zu sagen, wie Sie gehen über es zu benutzen, ohne dass der gesamte code.