前提・実現したいこと
指定したjavaソースコードファイルのクラス名、パッケージ宣言、importクラス名を取得するコードを書いているのですが
・FileReaderでファイルを読み込み、Character.compareで"c","l","a","s","s"などと順に比較していき、すべて等しかったら次の文字を空白まで読み格納する
という方法しか思いつかないのですがもっと便利な関数や書き方があるのでしょうか。
便利を求めるよりもまずやってみては如何でしょう。
公式ドキュメントの様々なクラスの説明を読んでみるというのも、意外なモノが見つかったり、今は役に立たなくても後日別の状況で「そういえばあの時なにか見たような」ということもある **かも** しれません。
「指定した」とはどのように指定するんでしょう。
ファイル名=クラス名になっているはずですし、そもそも作る目的は何ですか?
試していませんが、こんな記事を見つけました。ご参考までに。
https://www.dev2qa.com/how-to-parse-java-source-code-use-jdk-parser/
>便利を求めるよりもまずやってみては如何でしょう。
公式ドキュメントの様々なクラスの説明を読んでみるというのも、意外なモノが見つかったり、今は役に立たなくても後日別の状況で「そういえばあの時なにか見たような」ということもある **かも** しれません。
確かにそうですね。すこしずつですがクラスの説明等を読んでいきたいと思います。
>「指定した」とはどのように指定するんでしょう。
ファイル名=クラス名になっているはずですし、そもそも作る目的は何ですか?
前回幅探索のプログラムを製作したので、javaを始めたての頃に書いていた一つのファイルにclassを2つ以上書いていたプログラムを探すのにはどのようにしたらよいかと思ったからです。
>試していませんが、こんな記事を見つけました。ご参考までに。
ありがとうございます。
返信が遅くなってすみません。
作られているのは恐らく java の勉強がてらのご自分用のツールで、不特定多数に公開するような java のパーサを作るだとかではないのでしょうね。
>作られているのは恐らく java の勉強がてらのご自分用のツールで、不特定多数に公開するような java のパーサを作るだとかではないのでしょうね。
そうです。そのような場合はその旨を質問文に書いておいた方がよいのでしょうか。
私個人としては、 teratail が「エンジニア特化」と謳っていますのは、質問する側も答える側もエンジニアという前提のことと考えています。
エンジニアの(最終)目的はクライアントに必要な機能を提供することであって、プログラム自体(java であれば "ほにゃららクラス" とか "ぺけぺけメソッド" とか)ではありません。ですので、質問は「目的を達成するための手段」としてのプログラムを作成する過程で発生した問題であって、目的が達成されるなら「質問中のプログラムで無くても良い」ということもあり得ます。
そういう意味では、プログラムを作られている背景が多少見えたほうが、質問の本質に近い回答が得やすいかもしれません。
回答4件
あなたの回答
tips
プレビュー