Набор прямых супертипов, который определяет 4.10, является надмножеством набора типов, возвращаемых Types#directSupertypes(TypeMirror). В частности, для параметризованного типа, например, представленного ArrayList, в наборе должен присутствовать необработанный тип, например, представленный ArrayList:
При наличии универсального класса или интерфейса C с параметрами типа F1,…,Fn (n > 0), прямые супертипы параметризованного типа C, где каждый из Ti (1 ≤ i ≤ n) является типом, являются всеми следующими:
- Замена [F1:=T1,...,Fn:=Tn] применяется к прямому типу суперкласса C, если C является классом.
- Замена [F1:=T1,...,Fn:=Tn] применяется к типам прямого суперинтерфейса C.
- C, где Si содержит Ti (1 ≤ i ≤ n) (§4.5.1).
- Тип Object, если C — интерфейс без прямого типы суперинтерфейса.
- Необработанный тип C.
По запросу, пример:
Elements elements = ...
Types types = ...
TypeElement arrayList = elements.getTypeElement("java.util.ArrayList");
TypeElement string = elements.getTypeElement("java.lang.String");
DeclaredType arrayListTU = types.getDeclaredType(arrayList, string.asType());
List
Подробнее здесь: https://stackoverflow.com/questions/798 ... y-jls-4-10
Мобильная версия