2012-11-20 8 views
6

Ich bin mit IntelliJ des Code Analyzer (IntelliJ 11.1.4) auf eine Klasse und bin immer diese Warnung:Warum muss die Zuordnung von einem Typ zum selben überprüft werden?

Ungeprüfter Zuordnung: 'java.util.List' auf 'java.util.List'

Der Code es beschwert sich über ist:

List<String> targetDocumentIds = pepperWorkflowInstance.getTargetDocumentIds(); 

Zum Vergleich:

public class PepperWorkflowInstance<T extends PepperWorkflowInstanceData> implements Serializable { 

    private List<String>   targetDocumentIds = new ArrayList<String>(); 
    ... 
    public List<String> getTargetDocumentIds() { 
     return targetDocumentIds; 
    } 
    ... 
} 

Die Typen stimmen also überein ... warum also muss ich die Zuweisung "überprüfen"?

+4

Welcher Typ ist 'targetDocumentIds' aus' pepperWorkflowInstance' Beispiel? – jn1kk

+0

Nur realisiert, dass dies eine IntelliJ-Warnung ist, nicht JVM. Welche Version von IntelliJ hast du? – jn1kk

+0

Editiert, um Kommentare zu adressieren – Dancrumb

Antwort

0

Wenn die pfefferWorkflowInstance der Super-Klasse ist, in der der rohe Typ als Rückgabetyp verwendet wird, kann diese Nachricht generiert werden .

Beispiel.

class A{ 
    public List getTargetDocumentIds(){ 
     return new ArrayList(); 
    } 
} 

class B extends A{ 
    public List<String> getTargetDocumentIds(){ 
     return new ArrayList<String>(); 
    } 
} 

public class Tester { 

    public static void main(String[] args) { 
     A a = new B(); 
     List<String> targetDocumentIds = a.getTargetDocumentIds(); 
     // above produces compiler type safety warning       
    } 
} 
+0

Danke, aber ich bin mir nicht sicher trifft auf meine Situation zu ... gute Infos aber. – Dancrumb

1

Stellen Sie sicher, dass pepperWorkflowInstance Parameter hat:

pepperWorkflowInstance = new PepperWorkflowInstance<SomeClass>(); 

IDEA-6254 See.