Почему DirectSupertypes() не возвращает необработанный тип, как того требует JLS 4.10?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему DirectSupertypes() не возвращает необработанный тип, как того требует JLS 4.10?

Сообщение Anonymous »

Контракт для Types#directSupertypes(TypeMirror) говорит, что он вернет «прямые супертипы типа». Он также ссылается на раздел 4.10 Спецификации языка Java.
Набор прямых супертипов, который определяет 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.
Почему, напротив, и использовать конкретный пример, для ввода типа, такого как представленный ArrayList, DirectSupertypes(TypeMirror) возвращает (под)множество, не содержащее необработанный тип, такой как представленный по ArrayList (последний пункт в приведенной выше спецификации)?
По запросу, пример:
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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»