mainメソッドのクラス名取得方法について
- mainメソッドの持つクラス名を取得する方法について学びたいです。
- サーブレット名を取得してテキストファイルに出力する方法はわかるのですが、mainメソッドの持つクラス名を取得する方法がわかりません。
- Javaの初心者で情報が少なく、mainメソッドのクラス名取得について詳しく教えていただけると助かります。
- ベストアンサー
mainメソッドの持つクラス名を取得するには
サーブレットが実行された場合そのサーブレット名(getServletNameを使用して)を取得してテキストファイル出力するようにしております。 これをmainメソッドの持つクラス名(実行クラス名)を取得しようとgetClass()やgetName()を使ってやると”staticなメソッドは使用できません"となりコンパイルが通りません。 サーブレットのように実行クラス名を取得するのはmainメソッドの持つクラスの場合無理なんでしょうか? Javaの初心者なもので情報が少なければ要望していただければご提供しますのでご教授願います。 ちなみに出力する際はFileWriterやRandomAccessFileを使っております。よろしくお願いします。
- goldchildren
- お礼率78% (11/14)
- Java
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
私は試していませんが、こちらのサイトでひとつの方法が示されています。
関連するQ&A
- 全パッケージの取得、全クラスの取得、全メソッドの取得
やりたい事は、メインクラスより、同階層の全パッケージを取得(A)、 (A)より同階層の全クラスを取得(B)、 (B)より同階層の全メソッドを取得といったような事です。 例えば public class a { public static void main(String args[]) { 全パッケージの取得 全クラスの取得 全メソッドの取得 } } みたいな感じに。 試行錯誤したのですが、その処理を行う事の出来るメソッドかどうかも良く分からないし、 コンパイルエラーになるばかりで実現が出来ません。 ・メインクラスから同階層のパッケージを取得してパッケージ名を出力。 ・メインクラスからxパッケージ内の同階層のクラスを取得してクラス名を出力。 ・メインクラスからxパッケージにあるyクラス内のメソッドを取得してメソッド名を出力。 上記のようなめちゃくちゃシンプルなコードを挙げてご教示願います。
- ベストアンサー
- Java
- mainメソッドに関して
こんばんは。宜しくお願いします。 例えば2つのファイルhello.javaとtnk.javaがあった とき hello.java⇒HL.class(デフォルト)、mainメソッド(1) tnk.java⇒tnk.class(public)(2) の構成をとっているとします。 このHL.classのmainメソッドから、tnk.classの何か メソッド(public)を呼んで実行するとします。 このときに、tnk.classはHL.classとは別ファイルです からpublicでなくてはいけないのは分かります。 ですが、始まりであるmainメソッドを持つクラスは デフォルトでもよいのはどうしてなのか悩んで います。 (因みに、hello.javaのHL.classをHello.javaとして コンパイル・実行すると、wrong nameとエラーが出、 hello.javaのmainメソッドを持つクラスを一端 public class hello としてコンパイル・実行して やらないと、(1)に戻しても正常に実行できなくなる のも不思議です) 仕様と言ってしまったらそうかもしれませんが、 ご存知の方がおりましたら、ご教授くださいますよう お願いします。
- ベストアンサー
- Java
- [クラス名].[メソッド名].[メソッド名]という書き方。
javaを勉強している者です。 少しピンと来ない書き方があるのですがそれはタイトルの通りの書き方で、具体的には Main.getMailStore().isNewMail() という書き方です。MailというのがクラスでgetMailStore()というのがそのクラスで宣言されているメソッドで下記のように実装されています。(MailStoreというのはインターフェースとして別のファイルで宣言されています。) private static MailStore _mailStore; public static MailStore getMailStore(){ return _mailStore; } (MailStoreというインターフェースの中にisNewMailというメソッドは宣言されています。) public interface MailStore{ public boolean isNewMail(String uid); } これらだと、最初のMain.getMailStore().isNewMail()というのは、 「まず、MainクラスのgetMailStoreメソッドを呼び出して、そこでreturnされてくるMailStore型のクラスの中の、isNewMailメソッドを呼び出している」というのを一回で書いてしまっている書き方ということで合っているでしょうか?少しピンと来ないので・・(特にreturnされるメソッド(getMailStore)にそのまま.[メソッド]という書き方をのっけるあたりが) よろしくお願いします。
- ベストアンサー
- Java
- Threadクラスのメソッドの使用方法について
Threadクラスのメソッドの使用方法について質問させていただきます。 Thread th = currentThread(); System.out.println("Thread Name = " + th.getName() ); というコーディングにおいて、Thread th = currentThread();は、 currentThreadメソッドがstaticなのでnewしないで使用しているのは分かるのですが、 th.getName()は、staticでないのに、newせずに使用できるのがなぜか分かりません。 どなたか宜しくご教示お願い致します。
- ベストアンサー
- Java
- Javaにおけるメソッド名・ライン数取得に関して
Javaの実行コンソールにて、メソッド名・ソースのライン数を出力させたいと思ってます。 C言語でいう、__func__や、__LINE__のように、 下記のように、System.out.println()内に埋め込み、それを出力させたいのです。(下記では、不明箇所をxxxとさせて頂いております。) <ソース-TestClass.java-> public void main(){ Test(); return; } private static void Test(){ System.out.println("メソッド名["+xxx+"] ライン["+ xxx +"]"); return; } <実行ターム> > java TestClass > メソッド名[Test] ライン[14] Javaではそういったメソッド名やライン数などの取得は困難なのでしょうか?または、そういったAPIは用意されておりますでしょうか? ご存じの方いらっしゃいましたら、ご教授お願い致します。
- 締切済み
- Java
- mainクラス内に書いたメソッドの宣言の仕方(staticの必要性)
java を勉強中の超初心者です、宜しくお願いします。 main と同じクラスに disp というメソッドを作成してやり、” void disp(int a , int b )”と書いてやりましたが、mainからアクセス出来ません。 そこで、” static void disp(int a , int b )” という風に” static ” を先頭につけてやりましたら、うまく動きました。 これは、mainメソッドから他のメソッドにアクセスする場合には、必ず” static ” をつけてやる必要があるということでしょうか。 ======================================================= class クラス練習 { public static void main(String[] args) { disp(5,10); } /*static*/ void disp(int a , int b ) { System.out.println("a+b = " + (a+b)); } }
- ベストアンサー
- Java
- 【Java】親クラスでMainメソッドの出力
Javaについてです。 コマンドライン引数を複数渡し、数値の判定をtry/catchで行う。 catchメソッドには「stringFlg = true;」のみ。 渡ってきた値が数字のみの場合は、数値*数値の文字数を出力し、 数字のみでない場合は文字列を逆から1文字ずつ出力する。 上記のプログラムを下記のように変更したいです。 Testクラスで別パッケージのTest2クラスを継承し、Test2のLogメソッドを呼び出す。 引数で渡ってきた値をMainメソッドでコンソールに出力していたところを Logメソッドでコンソールに出力する。 Mainメソッドを呼びだそうとするとコンパイルエラーが起きる上に、 Mainメソッド内でLogメソッドをどこで呼び出せばいいのかイマイチ分かりません。 教えて下さい。 現時点のソースコードです。 package Test; import Test2.Test2; public class Test extends Test2 { public static void main(String[] args) { Test2 Log = new Test2(); boolean stringFlg = false; for (String arg : args) { try { int num = Integer.parseInt(arg); int nums = num * arg.length(); Log.Log(); stringFlg = false; } catch (NumberFormatException e) { stringFlg = true; }if(stringFlg){ char[] chars = arg.toCharArray(); for (int i = chars.length - 1; i >= 0; i--){ char str = chars[i]; Log.Log(); } } } } } package Test2; import Test.Test; public class Test2 { public void Log() { Test2 test2 = new Test(); System.out.println(test.main(args[0])); //コンパイルエラー } }
- 締切済み
- Java
- メソッド宣言内でクラス名が書かれる理由
public static void main(String arg[]){ 上記は、メソッド宣言ですが、このメソッド宣言の中に書かれているStringは、「標準クラスの1つ」だと聞いています。(標準クラスの意味さえ僕はわかりませんが、、参考書に書かれてあるのを見てもチンプンカンプン) 何故Stringは標準クラスの1つなのに、メソッド宣言の中に書かれているんですか? 質問1:私の仮説では、メソッドがどこのクラスに属するかを明示するためにメソッド宣言内にStringが書かれていると考えてます。それでよろしいですか? 質問2:メソッド宣言とは本質的にどういうことですか?プログラミング初心者の僕でもわかるように解説お願いします。
- ベストアンサー
- Java
お礼
ご返答が遅れて申し訳ありません。 まぁ何とか希望とおりの形が作れました。 ありがとうございました。