Ich bin sehr neu in Java-Programmiersprache, so ist dies wahrscheinlich dumme Frage, aber ich muss es fragen, weil ich es nicht allein herausfinden kann. Hier ist der Deal.Wie erstellte Methode mit Signatur als Liste
Ich möchte eine Methode erstellen, die bestimmte Objekttypen aus einer Liste extrahiert. Daher sollte die Methode List als Argument erhalten, dh die Liste sollte entweder Object1 oder Object2 enthalten. Ich habe wie folgt versucht:
public Object1 extractObject(List<Object>){
//some pseudo-code
... loop trough list and check if list item is instance of object one return that instance
}
Das Problem bei Verfahren mit List<?>
als Methode Argument erklärt, dass ich Kompilierungsfehler von Eclipse Syntax error on token ">", VariableDeclaratorId expected after this token
erhalten.
Wie setze ich die Methodensignatur richtig, um Objekttypen Object1 oder Object2 zu akzeptieren? Danke
Das ist mein Code:
protected Object1 getObject1(List<Object> list){
for(Object obj : list) {
if(obj instanceof Object1) {
return (Object1) obj;
}
}
return null;
}
Bearbeiten - was ist der Unterschied zwischen diesen 2:
public Object1 getObject1(List<Object> list){
for(Object obj : list) {
if(obj instanceof Object1) {
return (Object1) obj;
}
}
return null;
}
public Object1 extractObject(List<Object> list, Class<Object1> type) {
for(Object obj : list) {
if(type.isInstance(obj)) {
return (Object1)obj;
}
}
return null; // no match found
}
schießen, das ist es: D – London
dies ok mit zusätzlichem Casting ist, wird es nicht auf andere Art und Weise – London
@London kompiliert, ist es normal, dass Sie Cast benötigen, können Sie nicht bestanden den Klassentyp deine Liste. –