merkwürdige Situation Arraylist - unten ist der Code:"Warnung: [ungeprüft] ungeprüft cast", wenn Object Gießen <String[]>
ArrayList<String[]> listArr = new ArrayList<>();
Object[] obj = new Object[]{"str", listArr};
String str = (String) obj[0];//OK
ArrayList<String[]> list = (ArrayList<String[]>) obj[1];//warning: [unchecked] unchecked cast
Wenn Projekt (mit Compiler-Option -Xlint:unchecked
in Projekteigenschaften) gebaut wird, erhalte ich eine Warnung:
Warnung: [ungeprüfter] ungeprüfter Guss
Arraylist list = (Arraylist) obj [1];
erforderlich: Arraylist
gefunden: Objekt
Aber in gleicher Weise String Gießen ist OK. Was ist das Problem hier?
OK machen, aber wie später ändere es in 'ArrayList' Typ, damit ich es an Methoden übergeben kann, die 'ArrayList ' benötigen (sonst wird der Code nicht kompiliert) ? Oder ich sollte diese Warnung einfach ignorieren? –
@Ernestas Gruodis: Dies ist eine Einschränkung, die nicht ohne tiefgreifende, inkompatible Änderungen an der Java-Sprache * und * der JVM gelöst werden kann. Aber die Frage ist, warum Sie 'Object []' überhaupt verwenden. Javas Typsystem erlaubt es, die Objekttypen zu verfolgen, und wenn Sie sich bewusst dafür entscheiden, diese Typinformationen zu löschen, sollten Sie sich nicht über verlorene Typinformationen beschweren ... – Holger
'Object []' weil die Methode verschiedene Datentypen zurückgibt. Das bedeutet, dass die Frage beantwortet wird. –