Известно, что во время рантайма конкретный дженерик-тип неизвестен, т.к. стирается (type erasure), из-за этого даже в, к примеру в Scala, приспособлены отдельные костыли.
Однако, вот Java-код, возвращающий информацию о том, что в списке содержатся не какие-то элементы, а именно строки. Объясните, в чем подвох?
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Arrays;
import java.util.List;
public class Main {
public List<String> stringList = Arrays.asList("one", "two");
public static void main(String[] args) throws Exception {
Field field = Main.class.getField("stringList");
Type genericFieldType = field.getGenericType();
if (genericFieldType instanceof ParameterizedType) {
ParameterizedType aType = (ParameterizedType) genericFieldType;
Type[] fieldArgTypes = aType.getActualTypeArguments();
for (Type fieldArgType : fieldArgTypes) {
Class fieldArgClass = (Class) fieldArgType;
System.out.println("fieldArgClass = " + fieldArgClass);
}
}
}
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости