[java]呼び出したつもりがないメソッドが実行されている

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
java大好き

[java]呼び出したつもりがないメソッドが実行されている

#1

投稿記事 by java大好き » 7年前

javaで呼び出してないのに実行されているメソッドがあります。何か原因は分かりますか?
何故呼び出されてるか分かるかというとSystem.out.println("test");でこれが実行されているからです…
何故でしょう?Eclipseでメソッドを検索しても、そのクラスの中のメソッド以外、他から呼び出した形跡がありません…

Math

Re: [java]呼び出したつもりがないメソッドが実行されている

#2

投稿記事 by Math » 7年前

一寸情報不足でしょうね。もっと詳しく状況を説明してください。(コードも提示して頂くと分かりやすいでしよう。)

java大好き

Re: [java]呼び出したつもりがないメソッドが実行されている

#3

投稿記事 by java大好き » 7年前

コードはちょっと書けないのですが、EclipseでSystem.out.printlnで出力されるのって必ずしも実行順ではないのですか?

java大好き

Re: [java]呼び出したつもりがないメソッドが実行されている

#4

投稿記事 by java大好き » 7年前

かけないのが本当に残念で悔しいのですが、何かEclipseの仕様とかあるんですか?
実行されていても出力はしないとか、一気にまとめて出力するとかそんな仕様があれば教えてください…
printlnは強力な手段だとは思いますが…

java大好き

Re: [java]呼び出したつもりがないメソッドが実行されている

#5

投稿記事 by java大好き » 7年前

すいません
overrideのほうにかいてましたが失礼いたしました。
こちらですね。

その関数がどのオブジェクトから呼び出されたかとか、確認する方法はありますか?mainから呼び出しているんですが、もしかしたらjavaではそのクラスにアクセスしたら呼び出さなくても勝手に実行されるメソッドみたいな仕様があるかもしれません…

Math

Re: [java]呼び出したつもりがないメソッドが実行されている

#6

投稿記事 by Math » 7年前

”イベントドリブン”なプログラムなので(おそらく何百、何千というイベントが絡み合う)出力する順番はよくテストしないと”条件”によってかわります。フォームを出すだけで幾つものイベントが発生します。

hide

Re: [java]呼び出したつもりがないメソッドが実行されている

#7

投稿記事 by hide » 7年前

Eclipseならブレークポイントを張ってコールスタックを確認するのが一番手っ取り早そうです。

Math

Re: [java]呼び出したつもりがないメソッドが実行されている

#8

投稿記事 by Math » 7年前

デバッガーで調べたりログを出して調べますよ。

かずま

Re: [java]呼び出したつもりがないメソッドが実行されている

#9

投稿記事 by かずま » 7年前

次のプログラムに runメソッドを呼び出すところはありませんが、
実行すると run は呼び出されています。そういうことでしょうか?
Eclipse ではなく Java の仕様です。

コード:

class SubThread extends Thread {
    public void run() {
        System.out.println("run invoked");
    }
}

class Test {
    public static void main(String args[]) {
        SubThread sub = new SubThread();
        sub.start();
    }
}

java大好き

Re: [java]呼び出したつもりがないメソッドが実行されている

#10

投稿記事 by java大好き » 7年前

すいません原因が分かりました。

setContents(Transferable contents, ClipboardOwner owner)
これが原因でした。

setContentsはTransfearableを実装したクラスのメソッドを実行してるってことでいいですよね?
このクラスは実際にオーバーライドして自分が作っています。
setContentsの中身が見えないのでTransfearable実装クラスのメソッドがどこで実行されてるのか分からない状態でした…

自分の認識はあってるでしょうか?出来ればsetContentsの中を見たいのですが…


返信

“C言語何でも質問掲示板” へ戻る