Đây có thể là một câu hỏi ngu ngốc, nhưng tôi chỉ thấy một câu hỏi yêu cầu how to create a Type variable for a generic type. Sự đồng thuận dường như là bạn nên có một phương pháp giả trở lại loại đó, và sau đó sử dụng sự phản ánh để có được nó (trong trường hợp này ông muốn Map<String, String>
). Một cái gì đó như thế này:Tạo đối tượng kiểu được tham số bằng cách sử dụng lớp ẩn danh
public Map<String, String> dummy() { throw new Error(); }
Type mapStringString = Class.forName("ThisClass").getMethod("dummy").getGenericReturnType();
Câu hỏi của tôi là, không có phản xạ sử dụng nhiều, có thể bạn không chỉ cần làm điều gì đó như:
Type mapStringString = new ParameterizedType() {
public Type getRawType() {
return Map.class;
}
public Type getOwnerType() {
return null;
}
public Type[] getActualTypeArguments() {
return new Type[] { String.class, String.class };
}
};
Sẽ làm việc này? Nếu không, tai sao không? Và một số các mối nguy hiểm/vấn đề là gì nếu nó (ngoài việc có thể để lại một số loại như Integer<String>
mà rõ ràng là không thể.
Tôi đang cố gắng làm những gì mà giải pháp đề xuất của bạn cho phép: lấy một loại tham số từ một nguyên Nhập và liệt kê các tham số Kiểu được cung cấp tại thời gian biên dịch. Bạn có tìm cách khác để làm điều này không? – user48956