Tại sao điều này xảy ra? Một dòng trong mã hoạt động tốt trong khi dòng tương tự khác thì không. Loại diễn xuất tự động chỉ xảy ra trong một số điều kiện nhất định? Tôi đã cố gắng gán gt.echoV() cho một đối tượng và nó hoạt động tốt; nhưng khi tôi gán nó cho một String, lỗi tương tự sẽ xuất hiện trở lại.Loại phương pháp chung Java đúc
public class GeneMethodTest {
public static void main(String... args) {
GeneMethodTest gt = new GeneMethodTest();
gt.<String>echoV(); //this line works well
gt.<String>echoV().getClass();//this line leads to a type cast exception
}
public <T> T echoV() {
T t=(T)(new Object());
return t;
}
}
Câu trả lời này có thể giúp http://stackoverflow.com/a/3437930/1316346 –
'(T) (đối tượng mới())' là một * bỏ chọn * - đảm bảo đọc trên đó là gì và các tác động, cùng với * loại tẩy xóa *. –
Yup, tôi biết điều đó. @PaulBellora Trên thực tế (T) (đối tượng mới()) sẽ không làm gì trong thời gian chạy vì loại xóa. Vấn đề là khi tôi gọi gt. .echoV() việc đúc lớp tự động không có hiệu lực trong khi nó có hiệu ứng khi tôi gọi gt. echo.getClass() –