2012-11-20 15 views
6

biegnę Code Analyzer IntelliJ w IntelliJ (11.1.4) na klasy i jestem coraz to ostrzeżenie:Dlaczego przypisanie z jednego typu do tego samego wymaga sprawdzenia?

Nieograniczony zadanie: 'java.util.List' do 'java.util.List'

Kod narzeka na to:

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

Dla porównania:

public class PepperWorkflowInstance<T extends PepperWorkflowInstanceData> implements Serializable { 

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

Więc typy pasują do siebie ... dlaczego miałbym "sprawdzić" zadanie?

+4

Jakiego typu jest "targetDocumentIds" z instancji 'pepperWorkflowInstance'? – jn1kk

+0

Właśnie zdałem sobie sprawę, że jest to ostrzeżenie IntelliJ, a nie JVM. Jaką wersję IntelliJ masz? – jn1kk

+0

Wprowadzono modyfikacje w celu adresowania komentarzy – Dancrumb

Odpowiedz

0

Jeśli pepperWorkflowInstance jest super klasy, w której typ surowy jest używany jako typ zwrotny, , to może wygenerować ten komunikat.

Przykład.

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

Dzięki, ale nie jestem pewien, że dotyczy mojej sytuacji ... ale dobre informacje. – Dancrumb

1

Upewnij się, że pepperWorkflowInstance ma parametr:

pepperWorkflowInstance = new PepperWorkflowInstance<SomeClass>(); 

Zobacz IDEA-6254.

Powiązane problemy