2015-01-06 2 views
-1

Следующий код компилируется в jdk6, но не в jdk7. Пожалуйста, предложите какие-либо обходныеДженерики JDK7 не компилируются

public interface LocalCacheMap<K extends Comparable<? super K>, V> 
extends ClearableCache<K>, Iterable<V>{ 
    V get(K key); 
} 

public class Universe<K extends Comparable<? super K>, V, TSKEY extends Comparable<? super TSKEY>> extends MasterLocalCache<K> 
implements Iterable<V>, LocalCacheMap<K, V>, TsDaoInfo<TSKEY, K>, ValueConverter<K, Object, V>{ 
    public V get(K key) { 
     return get(key, keyFunct); 
    } 
    abstract public TSKEY buildTsKey(K key, Date date); 

    abstract public K getObjKey(TSKEY tsKey); 

    abstract public Date getDateKey(TSKEY tsKey); 

} 

public class JdbcTimesSeriesCacheDef<K extends Comparable<? super K>, TSKEY extends Comparable<? super TSKEY>, LC extends Universe<K,?,TSKEY>&DataSourceProvider, T> extends AbstractRawTimeSeriesCacheDef<K, T, LC> { 
    private final SqlDefs<T> defs; 

} 

При компиляции с jdk7, я получаю следующее сообщение об ошибке

JdbcTimesSeriesCacheDef ошибка: получить (K # 1) во Вселенной не может реализовать получить (K # 2) в LocalCacheMap

+2

Было бы уверен, хорошо иметь что-то, что мы * * может составить слишком ... – Makoto

+0

Существовало много зависимых классов и его трудно и громоздко, чтобы обеспечить все эти классы. – mk1

+1

Итак, вытащите их. Получите минимальный рабочий пример. Мы не можем видеть одни и те же ошибки компиляции, если вы не предоставляете то, что компилируется. – Makoto

ответ

0

Изменение

LC extends Universe<K,?,TSKEY>&DataSourceProvider, 

в

LC extends Universe<K,T,TSKEY>&DataSourceProvider, 
+0

Я не могу использовать T .. так как это не соответствующий тип. класс Universe , V, TSKEY. он должен быть значением типа 'V' – mk1

+0

Что теперь (?) означает, что JdbcTimeSeriesCacheDef не имеет значения, какой он тип. Можете ли вы использовать Object вместо этого? –

0

Я решил это, используя специальный тип значения «V» вместо «?»

общественный класс JdbcTimesSeriesCacheDef, V TSKEY расширяет Сопоставимой, LC простирается Вселенная & DataSourceProvider, Т> расширяет AbstractRawTimeSeriesCacheDef { частного конечного SqlDefs DEFS;

}

Смежные вопросы