イベントメソッドの引数にeを入れる必要性について

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

イベントメソッドの引数にeを入れる必要性について

#1

投稿記事 by java君 » 8年前

とあるサイトからの抜粋なんですが、一般的にイベントメソッドを書くときは以下ですよね。

コード:

 
  public void windowClosing(WindowEvent e){
//閉じるボタンが押されたときの処理
       System.exit(0);
    }
 


引数がいる必要がわからないんですが、何故必要なんですか?
windowClosingはeを引数にしても処理では使用してませんよね。

hide

Re: イベントメソッドの引数にeを入れる必要性について

#2

投稿記事 by hide » 8年前

そういう型だからです。
お名前と他の質問から見るにきっとJavaの話だと思いますが、Javaは型がしっかりしている言語ですので、
いらなくても型を合わせる必要があります。

例えばJavaScriptのように関数の宣言の合わせる必要がない言語もあります。
JavaScriptでは関数の引数の数を無視して渡せますし、定義した引数以外の引数を参照することもできます。
要はどちらもそういう言語である、というだけです。
オフトピック
質問ごとにちゃんとなんの言語なのかなどを書きましょう。
このトピックのページに直接検索エンジンから飛んでくる人がいる可能性だってあります。
フォーラムルールはこちら

Math

Re: イベントメソッドの引数にeを入れる必要性について

#3

投稿記事 by Math » 8年前

’とあるサイト’にあるように一般的に”イベントメソッド”とは”Windowから[Event]が発生したために呼び出される[Callback関数(つまりメソッド)]”のことです。

といわれても初めはなんのことかわからないですね。私もWindowの勉強を始めて1年間ほどはよく分かりませんでした。
Windowプログラムは”イベント駆動型プログラミング”で動いています。何も[Event]がなければ無限ループをメッセージ・ポンプによって流れているだけで何も起きません。(厳密にはサービスが動いてデフラグとかウイルスチェックとかしているがあまり目につかないので今は考えない)

マウスとかキーボード操作があって”イベントメソッドが発生する。そのイベントメソッドを発生させた”もとになるののが"e"である。大半のプログラムがイベントメソッドを書くことで仕事があるのであって"e"が無ければ仕事を失うプログラマーが続出しハローワークが大繁盛するはずである。然るにそうならないところを見ると"e"は健在である言える。よって背理法により"e"の必要性が証明いされた。
(オオゲサニイウト ソウナル)

まあ、最初は大部分"e"の情報を無視した例が多いので要らない”気がする”だけなのですがそれに気ずくのはは普通ずっと先のことです。
https://ja.wikipedia.org/wiki/%E3%82%A4 ... 3%E3%82%B0
https://ja.wikipedia.org/wiki/%E3%82%A4 ... C%E3%83%97
私はC#プログラマーです
https://ja.wikipedia.org/wiki/C_Sharp%E ... 4%E8%BC%83

(Javaのようなオブジェクト指向言語においては、関数ポインタのしくみが無く、コールバック関数と同様の処理を行うためのオブジェクトを用いて同様のしくみを実現している。Javaではコールバック関数に対応するオブジェクトを「Listener」(リスナー)と呼んでいる。)

java君

Re: イベントメソッドの引数にeを入れる必要性について

#4

投稿記事 by java君 » 8年前

確かにeの情報を見たりしますもんね、いずれにしてもイベントリスナーに登録されるコールバックとして、コールバックの型に従ってeが必要なときもあるってことですね。Win32APIの場合はhwndとかが必要でそれと同じ感じだと理解しました。

閉鎖

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