- - PR -
フィールド名からgetter/setterメソッド名の生成について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-11-28 11:40
yamamotoです。
Javaのソースを生成するソースジェネレーターを作成しています。 その中に、JavaBeansのクラスも含まれており、フィールド名からJavaBeans規約に則った形のメソッド名を導き出したいと思っています。 今は、ハードコーディングで規約に従うようには作っているのですが、Javaのコアライブラリなどで変換できるのであればそれを使いたいと思っています。 調べてもなかなか行き着かないので、質問することにしました。 CommonsのBeanUtilでできそうな気はするのですが・・・。 | ||||||||
|
投稿日時: 2005-11-28 14:05
的外れかもしれませんが,eclipseを使えば良いのでは?
他にもimport文の整理とか,Stringの定数化とか,いろいろ機能があります. | ||||||||
|
投稿日時: 2005-11-28 14:48
yamamotoです。
ありがとうございます。 確かにIDEを使えば済む話なのですが、大量のソースを機械的に生成する際に、IDEのリファクタリング機能では追いつきません。 人の手を介さずに大量のJavaコードを作ることを想定しています。 | ||||||||
|
投稿日時: 2005-11-28 19:05
リフレクションを利用してみては如何でしょうか。
指定のクラスからフィールドをプログラム内で取得する場合、
と言うクラスがあれば、
というようにフィールドの名前と型の取得が可能です。 privateフィールドの場合はClass#getDeclaredFieldsで取得が可能です。 名前を指定して取得するメソッドもあります。 名前と型が取得できれば、クラスに対応するソースを検索して 書き足すようにI/O操作を行ってから再ビルドを行えばよいかと思います。 | ||||||||
|
投稿日時: 2005-11-28 22:58
Javaassistなんていかがでしょうか。
データ格納用のBean程度なら、簡単な設定でクラスファイルを生成できるような 仕組みが作れますよ。 | ||||||||
|
投稿日時: 2005-11-29 01:22
>シュンさん
Javassistだと、クラスファイルを直接書き換えることが可能ですが、 ソースコードが残らないので、プロジェクトでは利用しにくいと思います。 (納品物としてソースも提供するケースが多い) また、実行時にクラスを生成しても、 コンパイル時に解決可能なsetter/getterのメソッドを持つ インターフェイス等を実装させなければ、 利用側のクラスではリフレクション操作にて getter/setterを実行しなければいけません。 そこまでするくらいなら、 java.util.Mapで事足りてしまうのではないでしょうか。 | ||||||||
|
投稿日時: 2005-11-29 02:01
middlegenなどはいかがでしょう。
| ||||||||
|
投稿日時: 2005-11-29 10:01
以前JakartaのPOIとVelocityを組み合わせて作ったことがあります。
この場合、Excelでクラス定義ファイルを作成し、POIでそのデータを読み込んでVelocityを通じて出力します。 公開できないのが残念ですが・・・ 一度作ってしまえば応用がかなり利くので、時間があれば勉強がてらやってみてはいかがでしょうか? |
1