Generischer Typ verloren für Element des Rohtyps

9

Ich habe ein seltsames Verhalten bei der Arbeit mit Generika gefunden.

In dieser Klasse Foo<T> hat das strings -Member nichts mit T zu tun:

%Vor%

Die Klasse wird in main verwendet:

%Vor%

Der Kompilierungsfehler ist "inkompatible Typen. Erforderlich: String found: Object".

Es scheint, dass Java das Argument String type an ArrayList vergisst, wenn der rohe Typ von Foo verwendet wird.

Meine Java Version ist 1.7.0_21

    
Niklas 08.10.2013, 13:10
quelle

1 Antwort

10

Einfach gesagt, weil rawFoo roh ist, werden seine nicht-statischen Elemente auch roh.

Dies ist in JLS §4.8 beschrieben :

  

Genauer gesagt ist ein roher Typ definiert als einer von:

     
  • Der Referenztyp, der gebildet wird, indem der Name einer generischen Typdeklaration ohne zugehörige Argumentliste übernommen wird.

  •   
  • Ein Array-Typ, dessen Elementtyp ein unformatierter Typ ist.

  •   
  • Ein nicht-statischer Elementtyp eines Rohtyps R, der nicht von einer Superklasse oder Superschnittstelle von R geerbt wurde.

  •   

Beachten Sie die letzte Kugel.

    
arshajii 08.10.2013, 13:34
quelle

Tags und Links

yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warningyii\base\ErrorException

PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: /usr/lib64/php/modules/mongodb.so (/usr/lib64/php/modules/mongodb.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/mongodb.so.so (/usr/lib64/php/modules/mongodb.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '404489',
    'url' => 'java-generics-type-erasure-of-other-fields-in-generic-class',
];

$_SESSION = [
    '__flash' => [],
];