2012-09-22 8 views

Trả lời

10

Giao diện Danh sách cũng chung chung. Hãy chắc chắn rằng bạn cũng không sử dụng T cho kiểu generic trong lớp của bạn. Lưu ý rằng trong http://docs.oracle.com/javase/6/docs/api/java/util/List.html, chúng sử dụng "E" cho tham số chung của lớp và "T" cho tham số chung toArray(). Điều này ngăn cản sự chồng chéo.

public class MyList<T> implements List<T> { 

// V1 (compiler warning) 
public <T> T[] toArray(T[] array) { 
    // in this method T refers to the generic parameter of the generic method 
    // rather than to the generic parameter of the class. Thus we get a warning. 
    T variable = null; // refers to the element type of the array, which may not be the element type of MyList 
} 

// V2 (no warning) 
public <T2> T2[] toArray(T2[] array) { 
    T variable = null; // refers to the element type of MyList 
    T2 variable2 = null; // refers to the element type of the array 
} 

}

+0

Nếu tôi làm như bạn đề xuất, tôi gặp lỗi và mã không biên dịch ... –

+0

@ user1590355: Tôi đã sửa lỗi của mình đề xuất trước đó, được dựa trên một sự hiểu lầm về câu hỏi của bạn. Bạn đã thử đề xuất hiện tại chưa? – ChaseMedallion

+0

@ user1590355: Bạn có thể đăng mã hoàn chỉnh không .. Với lớp học. –

0

Một lựa chọn khác là bạn có một nhập khẩu của một lớp được gọi là "T" và đó là lý do tại sao bạn đang nhận được cảnh báo. Tôi vừa giải quyết vấn đề của mình sau khi phát hiện ra rằng tôi đã nhập vô dụng vào:

org.apache.poi.ss.formula.functions.T 

tl; dr: Kiểm tra hàng nhập của bạn!