В программировании я довольно молод и неопытен. Потому не удаётся мне реализовать одно дельце. У меня есть метод, который возвращает объект типа T, который у нас первоначально неизвестен. На деле это будет класс, находящийся в массиве:
List<Class> classes
Так вот, сам метод будет принимать какой-нибудь объект и индекс, который и будет означать номер класса в массиве classes. Метод должен возвратить объект, переведенный к типу этого самого класса.
public <T> T get(Object obj,int int){return (T)obj;}
Вот тут и начинаются проблемы: как же сообщить дженерику T, какой у нас должен получится метод? Пробовал так(см. ниже), ругается IDE, мол, нельзя переприсвоить значение классу T
public <T> T get(Object obj,int index){
T=classes.get(index);
return (T)obj;
}
То, что вы хотите сделать делается так:
public <T> T cast(Object obj, int i){
Class<T> clazz = (Class<T>)classes.get(i);
return clazz.cast(obj);
}
Обычно вообще принято передавать сам класс в качестве параметра, т.е. ваш код может выглядеть ещё как-то так, но для этого в принципе и метод может быть лишним:
someMethod() {
//...
castObject(myObject, classes.get(i));
//...
}
public <T> T castObject(Object obj, Class<T> clazz){
return clazz.cast(obj);
}
Но учтите: то, что вы хотите сделать это прямой путь выстрелить в ногу и получить ClassCastException
, поэтому прежде чем это делать, нужно понимать зачем вам это и нельзя ли как-то заменить эту задачу другой, менее опасной.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как этот процесс устроен внутри ArrayList? Хотелось бы узнать подробности реализацииКак оно значениями оперирует? В частности - что и как делает...
Собственно нужно правильно написать запрос взять из таблицы фамилию ,которая чаше всех встречается за полгода
Есть несколько recycleview с разным количеством элементов загружаемых с сервератак же есть searchview реализован getFilter