После просмотра спецификации Java VM я заметил, что для создания символа можно использовать гораздо больше, чем просто буквы ASCII. идентификатор.
Во-первых, мне было интересно, есть ли какие-нибудь дополнительные символы (кроме $
, которые доступны для идентификаторов)
Как вы думаете, это возможно, если для расширенного набора символов закодировать дополнительную информацию в идентификаторе и пользовательском загрузчике классов, чтобы реализовать истинные универсальные шаблоны Java?
Конечно, вам придется обойти стирание типов, но это может быть возможно с помощью пользовательского синтаксического анализатора?
Таким образом, вы можете сохранить общие имена в формате вроде: $ g $ GenericList $ _Java_lang_String $
I ' m, используя здесь GenericList
, поскольку я не собираюсь изменять исходную реализацию!
Загрузите их с помощью загрузчика классов, создайте соответствующую версию GenericList
и отправьте ее назад.
РЕДАКТИРОВАТЬ: Я планирую использовать это для языка, который я создаю на JVM. Поскольку он использует $
и _
в качестве специальных символов, такая кодировка информации может работать!
РЕДАКТИРОВАТЬ 2: Я полагаю, что более сложную задачу делать бы общие методы? Есть ли у кого-нибудь информация о том, как они будут реализованы?
РЕДАКТИРОВАТЬ 3: Поскольку классы можно выгружать только при исчезновении загрузчика классов, смогу ли я кэшировать и удалять разрешенные шаблоны, как это работает в .Net, или я бы сделал это как C ++?