tôi đang học Java của chung, tôi snag vào một số vấn đề instantiating loại nhận được từ các thông số chung chung (điều này là có thể trong C# mặc dù)instantiating chung của tham số
class Person {
public static <T> T say() {
return new T; // this has error
}
}
Tôi cố gắng này: generics in Java - instantiating T
public static <T> T say(Class<?> t) {
return t.newInstance();
}
Lỗi:
Điều đó không hiệu quả. Sau đây trông ok, nhưng nó đòi hỏi phải instantiating một số lớp, không thể được sử dụng trên phương pháp tĩnh: Instantiating generics type in java
public class Abc<T>
{
public T getInstanceOfT(Class<T> aClass)
{
return aClass.newInstance();
}
}
Đây là loại chô bôi Java folks đang nói gì không? Đây có phải là giới hạn của loại tẩy xoá không?
Sự cố xung quanh vấn đề này là gì?
+1 và chấp nhận, không thanh lịch như C# mặc dù (không phải của bạn lỗi ;-)). Btw, đây có phải là cái mà họ gọi là loại xóa, đó là lý do tại sao nó không thể khởi tạo T một cách trực tiếp? – Hao
@Hao: chính xác: loại T thực sự không có sẵn trong thời gian chạy, đó là lý do tại sao bạn cần phải vượt qua trong một đối tượng Lớp để làm cho nó rõ ràng. –