Этот вопрос был задан без удовлетворительного ответа, кроме «зачем вы хотите это сделать», по адресу Reserved words as variable or method names. Я снова попрошу об этом и предоставит контекст, объясняющий, почему это необходимо, и даже направление к правильному решению.Создайте динамические классы с зарезервированными словами как переменные
Я пишу код, который динамически строит классы в соответствии с схемой базы данных, с которой я не контролирую. По большей части код работает чисто, но примерно в 0,1% случаев столбца в Java используются зарезервированные слова, используемые в качестве имен столбцов. Следующий код используется для создания динамического поля в классе:
evalClass.addField (CtField.make ("public" + columnType + "" + columnName + ";", evalClass));
Теперь, когда Java является языком, это приводит к возникновению проблемы, однако в байт-коде JVM это должно быть совершенно законным, поэтому должен быть способ динамически создавать это поле и обращаться к нему с помощью операций с байтовым кодом. Есть ли у кого-нибудь примеры того, как это будет сделано таким образом, чтобы поддерживать произвольные строки, включая пробелы и зарезервированные слова? Благодаря!
Этот вопрос абсолютно удовлетворительный: [* «Нет, нет способа». * (Http://stackoverflow.com/a/424002/157247). Различие между вашим вопросом и тем, что вы «Не пытайтесь сделать это на уровне исходного кода *. Я предлагаю редактировать, чтобы перенести эту информацию на передний план, и упомянуть только о другом вопросе в конце, говоря: «Я видел это, но он спрашивает об исходном коде, и я прошу сделать это на уровне байт-кода, поскольку мы не можем сделайте это на уровне исходного кода ». –
Я все еще не понимаю, зачем это нужно. Каждая архитектура сохранения, о которой я могу думать, предоставляет простые методы для сопоставления имен свойств поля/bean для произвольных имен столбцов и исключения имен полей ключевых слов Java, является одной из причин этого. Конечно, вы генерируете классы из схемы, но концепция такая же. Почему имена полей должны совпадать с именами столбцов? Почему бы вам просто не сделать это? добавить префикс ко всем вашим именам полей (или только зарезервированным словам) или что-то вместо этого? –
Даже если вы могли бы сгенерировать классы, какую цель они будут выполнять? Вы не можете использовать эти поля в любом исходном коде, который вы написали. Все это звучит как действительно хороший способ потратить много времени.Потратьте это время на построение сопоставлений, которые Джейсон упомянул в вашей архитектуре персистентности (и/или, возможно, спросите себя, почему вы пишете свою собственную архитектуру персистентности). –