Дайте мне посмотреть, если у вас есть намерение: вам нужна карта, в которой хранятся пары Class
/ ServiceLoader
, где каждая пара параметризована одинаковыми T
, но T
может отличаться для разных пар? 1005 *
Если это так, то лучшим решением будет объявить свой собственный класс, который будет иметь такой интерфейс. Внутренне он будет хранить эти пары в общей карте Map<Class<?>,ServiceLoader<?>>
.
public class MyMap {
private Map<Class<?>, ServiceLoader<?>> loaders
= new HashMaps<Class<?>, ServiceLoader<?>>();
public<T> void put(Class<T> key, ServiceLoader<T> value) {
loaders.put(key, value);
}
@SuppressWarnings("unchecked")
public<T> T get(Class<T> key) { return (ServiceLoader<T>) loaders.get(key); }
}
@SuppressWarnings("unchecked")
аннотации не являются чистым злом. Вы должны стараться избегать их, но есть определенные случаи, когда вы можете выяснить, что приведение правильное, несмотря на тот факт, что компилятор этого не видит.