Я столкнулся с тем же вопросом. Мое решение состояло в том, чтобы использовать рефлексию для изучения всех методов класса ObjectFactory, исключая те методы, которые не были createXXX (), возвращающие экземпляр одного из моих связанных POJO. Каждый обнаруженный класс добавляется в массив Class [], который затем передается в экземплярный вызов JAXBContext. Это хорошо работает, нужно только загрузить класс ObjectFactory, который все равно понадобился. Мне нужно только поддерживать класс ObjectFactory, задачу, выполняемую вручную (в моем случае, потому что я начал с POJO и использовал схему), или может быть сгенерирован по необходимости xjc. В любом случае, он эффективен, прост и эффективен.
Когда я начинал использовать Perl, мне объяснили, что эти символы были выбраны потому, что:
$
немного походил на 's', так что это было для s каларов, @
имеет букву «a» в середине, так что это было для a rrays, а %
было для хэшей, потому что это выглядело как пара ключ-значение, разделенная косой чертой. Это потому, что Perl использует сигилы :
В компьютерном программировании сигилы (произносится /'sɪdʒ.ɪl/ или /'sɪg.ɪl/; множественное число sigilia или sigils) является символом прикреплен к имени переменной, показывая тип данных или область видимости переменной. В термин был впервые применен к использованию Perl Филиппа Гвина в 1999 году, чтобы заменить более громоздкий "забавный персонаж в перед именем переменной ". Имя на основе слова, означающего волшебный символ (см. сигил (магия)).
http://www.wall.org/~larry/natural.html :
В английском языке используются числа и порядок слов с остатками падежной системы в местоимениях: " Мужчина посмотрел на мужчин, и они снова посмотрели на него ". В этой фразе совершенно ясно, кто и кому что делает. Точно так же в Perl есть числовые маркеры на существительных; то есть $ dog - это один пес, а @dog (потенциально) - много. Итак, $ и @ немного похожи на «это» и «эти» в английском языке.
Несколько причин объяснены Ларри Уоллом и другими в «Программировании Perl»:
В любом заданном пространстве имен [...] каждый тип переменной имеет свое собственное пространство имен , определяется забавным персонажем. Вы можете, не опасаясь конфликта, использовать одно и то же имя для скалярной переменной, массива или хэша (или, если на то пошло, дескриптора файла, подпрограммы, метки или вашего домашнего ламы).
[...]
Как и большинство компьютерных языков, Perl имеет список зарезервированных слов, которые он распознает как специальные ключевые слова. Однако, поскольку имена переменных всегда начинаются с забавного символа, зарезервированные слова на самом деле не конфликтуют с именами переменных.
$
. $
), массивами ( @
) и хэшами (%
). Не все из них работают, некоторые начинаются с% (хешей) или с помощью @ (массивов).
Помечать их как переменные, а также обозначать их тип - это дизайнерское решение.
Обратите внимание, что вы можете иметь как $ abc
, так и % abc
.
Ознакомьтесь с руководством по переменным Perl .