Истинные дженерики Java (шаблоны)

После просмотра спецификации Java VM я заметил, что для создания символа можно использовать гораздо больше, чем просто буквы ASCII. идентификатор.

Во-первых, мне было интересно, есть ли какие-нибудь дополнительные символы (кроме $ , которые доступны для идентификаторов)

Как вы думаете, это возможно, если для расширенного набора символов закодировать дополнительную информацию в идентификаторе и пользовательском загрузчике классов, чтобы реализовать истинные универсальные шаблоны Java?

Конечно, вам придется обойти стирание типов, но это может быть возможно с помощью пользовательского синтаксического анализатора?

Таким образом, вы можете сохранить общие имена в формате вроде: $ g $ GenericList $ _Java_lang_String $

I ' m, используя здесь GenericList , поскольку я не собираюсь изменять исходную реализацию!

Загрузите их с помощью загрузчика классов, создайте соответствующую версию GenericList и отправьте ее назад.

РЕДАКТИРОВАТЬ: Я планирую использовать это для языка, который я создаю на JVM. Поскольку он использует $ и _ в качестве специальных символов, такая кодировка информации может работать!

РЕДАКТИРОВАТЬ 2: Я полагаю, что более сложную задачу делать бы общие методы? Есть ли у кого-нибудь информация о том, как они будут реализованы?

РЕДАКТИРОВАТЬ 3: Поскольку классы можно выгружать только при исчезновении загрузчика классов, смогу ли я кэшировать и удалять разрешенные шаблоны, как это работает в .Net, или я бы сделал это как C ++?

6
задан Darkzaelus 27 May 2011 в 11:04
поделиться