Hãy tưởng tượng kịch bản sau đây:Phản ánh cho Lớp tham số chung trong Java?
class MyClass extends OtherClass<String>{
String myName;
//Whatever
}
class OtherClass<T> {
T myfield;
}
Và tôi phân tích MyClass sử dụng phản chiếu đặc biệt (MyClass.class).getDeclaredFields()
, trong trường hợp này tôi sẽ nhận được các lĩnh vực sau (và các loại, sử dụng getType() của Field):
myName --> String
myField --> T
Tôi muốn nhận được Loại thực tế cho T, được biết đến lúc chạy do "Chuỗi" rõ ràng trong ký hiệu mở rộng, làm cách nào để chuyển loại myField không di truyền?
CHỈNH SỬA GIẢI QUYẾT:
Có vẻ như câu trả lời là "bạn không thể". Đối với những người có thể xem xét câu hỏi này sau, tôi khuyên bạn nên sử dụng Jackson (tôi đã cố gắng làm điều này để tạo JSON) và chú thích các lớp và các trường của bạn theo cách sao cho Jackson biết về hệ thống phân cấp thừa kế và có thể tự động làm gì câu trả lời chính xác bên dưới được đề xuất.
Câu trả lời không phải là bạn không thể; bạn có thể dễ dàng tạo một bản đồ từ các tham số kiểu tới các đối số kiểu rõ ràng. – Jeffrey