合計 昨日 今日

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

[このトピックは解決済みです]

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: java君
[URL]
Date: 2017年1月07日(土) 19:19
No: 1
(OFFLINE)

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

とあるサイトからの抜粋なんですが、一般的にイベントメソッドを書くときは以下ですよね。
コード[C++]: 全て選択
1
2
3
4
5
 
  public void windowClosing(WindowEvent e){
//閉じるボタンが押されたときの処理
       System.exit(0);
    }


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

Name: hide
[URL]
Date: 2017年1月07日(土) 20:27
No: 2
(OFFLINE)

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

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

例えばJavaScriptのように関数の宣言の合わせる必要がない言語もあります。
JavaScriptでは関数の引数の数を無視して渡せますし、定義した引数以外の引数を参照することもできます。
要はどちらもそういう言語である、というだけです。

Offtopic :
質問ごとにちゃんとなんの言語なのかなどを書きましょう。
このトピックのページに直接検索エンジンから飛んでくる人がいる可能性だってあります。
フォーラムルールはこちら

Name: Math
[URL]
Date: 2017年1月08日(日) 09:27
No: 3
(OFFLINE)

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

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

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

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

まあ、最初は大部分"e"の情報を無視した例が多いので要らない”気がする”だけなのですがそれに気ずくのはは普通ずっと先のことです。
https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E9%A7%86%E5%8B%95%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0
https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%83%AB%E3%83%BC%E3%83%97
私はC#プログラマーです
https://ja.wikipedia.org/wiki/C_Sharp%E3%81%A8Java%E3%81%AE%E6%AF%94%E8%BC%83

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

Name: java君
[URL]
Date: 2017年1月08日(日) 11:11
No: 4
(OFFLINE)

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

[解決!]

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


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[10人]