• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【Java】参照型で宣言された変数名の抽出)

【Java】参照型で宣言された変数名の抽出

このQ&Aのポイント
  • Javaのソースコードを解析し、参照型で宣言されている変数名を抽出する方法を教えてください。
  • プリミティブ型の変数についてはStreamTokenizerクラスを利用していますが、参照型の変数名を抽出する方法が分かりません。
  • デバッガを使わずに参照型で宣言された変数名を抽出する方法についてのアドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ひとまず >コードをトークンに分解して、型名の次に来るワードトークンを変数名として抽出 この方法だとローカル変数も抽出してしまうと思いますが ローカル変数も抽出の対象にするんでしょうか? ローカル変数を対象としないなら、alice_asahina様の回答にある様にリフレクションが楽でしょう。 ただし、その場合は抽出元がソースコードでは無くクラスファイルになる事に注意して下さい。 あくまでソースコードを対象として処理するのであれば、 >コードをトークンに分解して、型名の次に来るワードトークンを変数名として抽出 でしなければならない事の概要としては間違っていないと思いますが、 実装の上ではjavaがフリーフォーマットである事に注意して下さい。 型名の途中にホワイトスペースが挟まる事はありませんが、配列の場合こんな書き方も出来ますので。 ↓ int a [ ]; また、その際にローカル変数を抽出の対象にしないのであれば、 更に宣言スコープ等を考慮する必要が出てきますし、 これに内部クラスや匿名クラスのフィールドも混ざってくると非常にややこしい事になると思いますが、不可能ではありません。 がんばってください。

datchman
質問者

お礼

アドバイスありがとうございます。 ローカル変数も対象としています。 (もう少し詳しく書くべきでした。すみません) 確かに、javaはフリーフォーマットなので ややこしいところもありますが、 解析対象となるコードは、教科書に載っているような、 お手本コードなので、あまり心配はしていません。 しかし、そういった部分もカヴァーするに越したことは ないので、時間に余裕があるかぎり検討したいと思います。 また、mamadorusuさんのアドバイスがきっかけで、 今まで見落としていた問題も見えてきました。 そういう点で参考になりましたので、 こちらをベストアンサーとさせていただきます。

その他の回答 (1)

noname#147388
noname#147388
回答No.1
datchman
質問者

お礼

ヒントありがとうございます。 出来れば、ソースコードから抽出したいのですが、 (もう少し詳しく書くべきでした。すみません) これもひとつの方法として参考にしたいと思います。

関連するQ&A