Головоломка преобразования типа Java Generics

Я пытаюсь использовать класс Google Guava ImmutableSet для создания набора неизменяемых классов со свойствами, подобными времени (java.util.Date и org.joda.time.DateTime).

private static final ImmutableSet<Class<?>> timeLikeObjects = ImmutableSet.of(Date.class, DateTime.class);

Я совершенно не понимаю, почему я получаю эту ошибку компилятора (Java 1.6 в eclipse).

Type mismatch: cannot convert from ImmutableSet<Class<? extends Object&Serializable&Comparable<? extends Comparable<?>>>> to ImmutableSet<Class<?>>

Обратите внимание, что это работает:

private static final ImmutableSet<?> timeLikeObjects = ImmutableSet.of(Date.class, DateTime.class);

Однако я явно потерял часть общего описания типа timeLikeObjects.

Я никогда не сталкивался с символом амперсанда в общем описании, и это не похоже на допустимый синтаксис.

Есть ли способ указать множественное наследование в Java Generics, который я просто пропустил?

6
задан Matt Taylor 11 May 2012 в 17:11
поделиться