Tôi cố gắng để generify lớp sau:.Generifying mảng kiểu như Object [] lớp
public class FooService {
private Client client;
public Foo get(Long id) {
return client.get(id, Foo.class);
}
public List<Foo> query() {
return Arrays.asList(client.get(Foo[].class));
}
}
Mọi thứ đều ổn trừ Foo[].class
:
public abstract class BaseService<T, I> {
private Client client;
private Class<T> type;
public BaseService(Class<T> type) {
this.type = type;
}
public T get(I id) {
return client.get(id, type);
}
public List<T> query() {
return Arrays.asList(client.get(/* What to pass here? */));
}
Làm thế nào tôi có thể giải quyết vấn đề này mà không đi Foo[].class
trong constructor như tôi đã làm với Foo.class
?
Tôi nghĩ điều đó quá, nhưng sau đó ý tưởng cảnh báo cho tôi và nói 'không được kiểm soát dàn diễn viên: ... '. Có cách giải quyết nào cho vấn đề này không? –
@ s.alem Liệu nó có cảnh báo bạn tại điểm gọi 'client.get' hoặc tại điểm thiết lập' arrType' trong hàm dựng không? – dasblinkenlight
Xin lỗi, điều đó xảy ra khi tôi đặt 'Lớp' cho 'arrType'. Khi tôi định nghĩa nó là 'Lớp', nó không phàn nàn ở đó. Tuy nhiên, nó được gọi là 'Unchecked assignment: ...' trong phương thức gọi là 'client.get (arrType)'. Tôi có thể sống với điều đó, nhưng sẽ rất tuyệt nếu có cách giải quyết khác. –