Я играю в учебных целях с Javas Generics и пытаюсь использовать Reflection на них.В тот же момент, когда я понял половину, я сталкиваюсь с проблемами, которые я не видел, как решить.У меня есть простой класс Box:
public class ReflectionBox<E> {
protected E e;
public ReflectionBox(){}
public ReflectionBox(E element){ this.e = element; }
public void set(E element){ e = element; }
public E get(){ return e; }
//... a few reflection methods...
}
Я расширил этот класс, чтобы попытаться реализовать интерфейс с ним.Этот интерфейс вынуждает меня написать следующее утверждение:
public static final Parcelable.Creator<ParcelableBox<?>> CREATOR =
new Parcelable.Creator<ParcelableBox<?>>() {
@Override
public ParcelableBox<?> createFromParcel(Parcel source) {
return new ParcelableBox<Object>(source);
}
}
Возможно ли получить информацию о классе из ?
с помощью Reflection?Я не могу использовать методы из Object
, чтобы отразить, какой класс помещен внутрь, ни создать экземпляр new ParcelableBox<?>(? element)
. Посылка не является тем классом, каким должен быть E, но мой класс находится в этой посылке и должен быть классом?
.
РЕДАКТИРОВАТЬ: Привет, спасибо за все ответы: так как многие пользователи не понимают, что я пытаюсь сделать: есть интерфейс Parcelable
, который, я думаю, работает какПоток данных, в который можно помещать объекты-члены.Вы используете что-то вроде parcel.writeString(String string)
или parcel.writeValue(Object value)
для хранения и parcel.readValue
в том же направлении, в котором вы положили его внутрь.Для обучения я хочу реализовать это в общем.Так что я хочу иметь возможность хранить в Parcel и читать из него, используя Reflection.потому что CREATOR является статическим, я не могу использовать E.