Я пытаюсь реализовать параметризованный класс в Java с enum в качестве параметра типа.Все работает нормально, за исключением того, что если вы посмотрите на код ниже, есть анонимный класс Car.Creator
с параметром K
.Но, конечно, вместо K
должно быть CarObject<T>
, но это не так просто.Если я поставлю CarObject<T>
вместо K
, я получу синтаксическую ошибку.Может ли кто-нибудь объяснить, возможно ли что-то подобное, и, возможно, предоставить пример кода.
public class CarObject<T extends Enum<T>>
{
public Map<T, String> values;
private Class<T> typeClass;
public CarObject(Class<T> clazz)
{
typeClass = clazz;
values = new EnumMap<T,String>(typeClass);
}
public static final Car.Creator<K> Creator = new Car.Creator<K>()
{
public K create()
{
return new K();
}
public K[] newArray(int size)
{
return new K[size];
}
}
}
Я могу привести пример из официальной документации Android (см. Код в «Классе».Обзор '), где это работает отлично.Я думаю, что в Android происходит некое волшебство.Я пытаюсь сделать то же самое - реализовать интерфейс Parcelable.Я только что составил этот пример без implements Parcelable
и прочего, потому что я подумал, что, возможно, это всего лишь синтаксический сахар :).