いつもお世話になっております。
java1.6
eclipse3.3
にてabstractクラスのメソッドを呼び出している手前でブレークポイントを設定し、ステップインしてデバックしていくと、
abstractクラスの方のソースがデバックされます。
abstractクラスを継承している実際に流れているソースをデバックする事はできますでしょうか。
今はソースを追う時、abstractメソッドがきた場合、
そのメソッド名でプロジェクト全体を検索して、どのソースが実行されているのかチェックしていますが、たくさんのソースから継承されている場合、現在流れている処理が、どのソースのロジックかを特定するのが大変です。
簡単に特定する事はできますでしょうか。
よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
下記のようなテストコードで試してみましたが、foo・barどちらのメソッドも、デバッガでstep intoで実行するとAbsClsではなくClsのほうのソースコードが表示されました。
Eclipse 3.5です。abstract class AbsCls {
public void foo() {
System.out.println("AbsCls.foo()");
}
abstract public void bar();
}
class Cls extends AbsCls {
public void foo() {
System.out.println("Cls.foo()");
}
public void bar() {
System.out.println("Cls.bar()");
}
}
AbsCls x = new Cls();
x.foo();
x.bar();
あと細かいですが、 ×デバック ○デバッグ です。
この回答への補足
ご回答ありがとうございます。
提示いただいたソースをeclipse3.3で実行してみたところ、
ご指摘のようにClsのほうのソースコードが表示されました。
ソースの書き方のせいなのか。
上手くいく場合と、いかない場合のソースを比べてみて試してみます。
ありがとうございました。
試してみてまた報告します。
No.1
- 回答日時:
>今はソースを追う時、abstractメソッドがきた場合、
意味が分からないです。abstaractメソッドは処理内容がないメソッドですのでデバッグできないです。
質問したいことはabstractメソッドをオーバーライドしたメソッドのうち、どのクラスのメソッドが実行されているかを知りたいということでしょうか?
上記であると仮定して標準出力(System.out.println();)を使う or log4jでログ出力するのが一番簡単だと思います。
文章を読んだ印象としては質問者さんは継承に対する理解が不足しているように思われますので、
一度、継承やメソッドのオーバーライドに関する知識を整理した方が良いと考えます。
この回答への補足
ご回答ありがとうございます。
たくさんオーバーライドしている場合、
すべてログを仕込むのでしょうか。
自分がつくった所なら構わないですが、他の人が作った所を
動かして解析する場合、できればソースに手を加えたくないです。
確かに自分の文章が良くないですが、
自分の質問しようとしている事が分かっていて、
あえて違う回答をしているように思えて残念です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- C言語・C++・C# C# 継承の問題で programに示された拡張をすべて含んだ上で,クラス Mammal に,そのオ 1 2022/07/22 09:48
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- その他(プログラミング・Web制作) Pythonで複数のメソッドをまとめて管理する方法について 1 2023/03/30 00:01
- Windows 10 IT初心者です! powershellで以下のようなエラーが出ました オブジェクト参照がオブジェクト 1 2023/05/17 11:30
- 車検・修理・メンテナンス CARROZZERIA FH6500DVDSを購入しました ステアリングリモコンの設定で最初にソース 2 2023/07/01 13:28
- その他(料理・グルメ) カップ麺の焼きそばの素材は 5 2022/05/01 19:21
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
JSPで<SELECT>の中にDBから持っ...
-
Labelコントロールに数字を代入...
-
VBPをダブルクリックするとたま...
-
C++/CLIにてForm1の要素に外部から
-
DataGridViewでセルクリックイ...
-
javascriptからjavaを呼び出したい
-
配列のメソッド
-
JAVA コンパイル時のエラー
-
Excel VBA でExcelを終了したい...
-
ODBCでMoveNextがうまく動作し...
-
final修飾子を使っているのに、...
-
コンパイルエラーの理由。
-
ウィンドウを最前面にできません
-
VBA コピーが出来ません…!
-
PDFファイルから別ウィンドウで...
-
IDispatch と dispinterface の...
-
HyperLinkのNavigateUrl属性に...
-
エクセルのマクロでプリンタを...
-
mainメソッドのthrows節で設定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
mainメソッドのthrows節で設定...
-
final修飾子を使っているのに、...
-
Labelコントロールに数字を代入...
-
onClickで関数呼出し後に、結果...
-
DataGridViewでセルクリックイ...
-
JSPで<SELECT>の中にDBから持っ...
-
コマンドプロンプト実行後に画...
-
Refreshメソッドの使い方
-
エクセルVBAにおけるON TIMEメ...
-
boolean型のフィールドとゲッタ...
-
javascriptからjavaを呼び出したい
-
VBPをダブルクリックするとたま...
-
配列のメソッド
-
【sendkeysメソッドが動かずに...
-
Excel VBA でExcelを終了したい...
-
VB.netで、シリアル通信のタイ...
-
worksheets & rows メソッドは...
-
Application.Wait の参照設定
-
(String args[])というメッソ...
おすすめ情報