この質問は、「なぜあなたはこのようにしたいのですか?」以外の満足できる回答がなくても、Reserved words as variable or method namesに尋ねられました。私はそれをもう一度聞いて、それがなぜ必要なのかを説明する文脈を提供し、適切な解決策への方向性も提供します。予約語を変数に持つ動的クラスを作成する
私は制御できないデータベースのスキーマに合わせて動的にクラスを構築するコードを書いています。ほとんどの場合、コードはきちんと動作していますが、約0.1%の列のケースでは、Javaの予約語が列名として使用されています。次のコードは、クラスの動的フィールドを作成するために使用されています。
evalClass.addField( "public" + columnType + "" + columnName + ";"、 "evalClass));
ここでJavaを使用すると、この問題が発生しますが、JVMのバイトコードでは完全に正当なものでなければならないため、このフィールドを動的に作成し、バイトコード操作を使用してアクセスする方法が必要です。スペースや予約語を含む任意の文字列をサポートする方法でこれがどのように行われるかの例はありますか?ありがとう!
その質問は絶対に満足のいく回答です:[* "いいえ、方法はありません" *](http://stackoverflow.com/a/424002/157247)あなたの質問とそのことの区別は、 *ソースコードレベルで*しようとしていない*。その情報をフォアグラウンドに移動するように編集することを提案し、最後に「私はこれを見ましたが、ソースコードを尋ねています。バイトコードレベルでそれを行うことを頼んでいます。ソースコードレベルでやってください。 " –
これはなぜ必要なのかまだ分かりません。私が考えることができるすべての永続性アーキテクチャは、フィールド/ Beanのプロパティ名を任意の列名にマッピングするための簡単な手法を提供し、Javaキーワードフィールド名を避けることもその理由の1つです。もちろん、スキーマからクラスを生成していますが、その概念は同じです。なぜあなたのフィールド名は列名と同じでなければならないのですか?どうしてあなただけではないのですか?プレフィックスをすべてのフィールド名に(または予約語に)追加するか、代わりに何かを追加しますか? –
クラスを生成することができたとしても、どのような目的を果たしますか?あなたが書いたソースコードでは、これらのフィールドを使用することはできませんでした。全体のことは、多くの時間を無駄にする本当に良い方法のように聞こえる。ジェイソンがあなたの永続性アーキテクチャに言及したマッピングを構築する時間を費やしてください(そして/あるいはあなた自身の永続性アーキテクチャを書いている理由を尋ねるかもしれません)。 –