Próbuję generify następujące klasy:.Generifying typu array, takich jak Object [] Klasa
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));
}
}
wszystko jest w porządku z wyjątkiem 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? */));
}
Jak mogę rozwiązać ten problem bez przechodzenia Foo[].class
w konstruktorze takim, jaki zrobiłem z Foo.class
?
Myślałam, że też, ale wtedy pomysł ostrzega mnie i mówi: 'Nieograniczony obsada: ...'. Czy istnieje również obejście tego problemu? –
@ s.alem Czy ostrzeże Cię w momencie wywołania 'client.get' lub w miejscu ustawienia' arrType' w konstruktorze? – dasblinkenlight
Niestety, dzieje się tak, gdy ustawiam 'Class' dla 'arrType'. Kiedy określam to jako "Klasa", nie narzeka tam. Jednak jest to powiedzenie 'Niezaznaczone przypisanie: ...' w wywołaniu metody 'client.get (arrType)'. Mogę z tym żyć, ale byłoby fajnie, gdyby było obejście. –