Я пытаюсь реализовать Apache Shiro CacheManager interface. Его единственный метод имеет следующую подпись:Параметр типа Java путаница
<K,V> Cache<K,V> getCache(String name) throws CacheException
кажется крайний левый <K, V>
параметр типа эффективно говорит компилятору, что K и V являются «типы». Мой вопрос таков: как я могу вернуть экземпляр этого типа? Когда я пытаюсь следующий код, Eclipse жалуется, что K и V не могут быть разрешены к типам:
public class ShiroGuavaCacheManager implements CacheManager
{
private Cache<K, V> cache; // <--- The compiler complains here
@Override
public <K, V> Cache<K, V> getCache(String name) throws CacheException
{
return (cache != null) ? cache : new ShiroGuavaCache<K, V>();
}
}
Если вы хотите определить свой собственный класс, который имеет элемент класса с параметризованными типами, вам нужно сделать класс параметризованным, т.е. 'Открытый класс ShiroGuavaCacheManager реализует CacheManager' ... В этом случае вы, вероятно, захотите удалить первый' 'из объявления' getCache'; вам не нужно параметризовать метод с теми же параметрами, которые вы используете для этого класса. Если вы понятия не имеете, о чем я говорю, и вам нужно объяснение о том, что такое дженерики, сообщите нам об этом. –
ajb