2012-11-20 31 views
6

Tôi đang chạy Mã Analyzer IntelliJ của (IntelliJ 11.1.4) trên một lớp và đang nhận được cảnh báo này:Tại sao có thể chuyển nhượng từ một loại cho cùng một nhu cầu kiểm tra?

không được kiểm soát công việc: 'java.util.List' thành 'java.util.List'

mã nó than phiền về là:

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

Để tham khảo:

public class PepperWorkflowInstance<T extends PepperWorkflowInstanceData> implements Serializable { 

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

Vì vậy, các loại phù hợp ... vậy tại sao tôi cần phải 'kiểm tra' nhiệm vụ?

+4

Loại 'targetDocumentIds' nào từ phiên bản' pepperWorkflowInstance'? – jn1kk

+0

Chỉ cần nhận ra đây là cảnh báo IntelliJ chứ không phải JVM. Bạn có phiên bản IntelliJ nào? – jn1kk

+0

Thực hiện chỉnh sửa để giải quyết các nhận xét – Dancrumb

Trả lời

0

Nếu pepperWorkflowInstance là siêu lớp, trong đó loại thô được sử dụng làm loại trả về, thì có thể tạo thông báo đó.

Ví dụ.

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

Cảm ơn, nhưng tôi không chắc chắn áp dụng cho tình hình của tôi ... thông tin tốt mặc dù. – Dancrumb

1

Hãy chắc chắn rằng pepperWorkflowInstance có tham số:

pepperWorkflowInstance = new PepperWorkflowInstance<SomeClass>(); 

Xem IDEA-6254.

Các vấn đề liên quan