いろいろなライブラリやコードを見ていると、引数のつくりがわからなくなります。
仮引数と実引数にわけて質問します。
よろしくお願いします。
※さいごに追記あり
1. 仮引数
たとえばColor(int r, int g, int b)
とColor(int r, int g, int b, int a)
の両方ある理由です。引数で同時に(View view, 仮引数)
のように宣言することもできると思いますが、引数の中のそれが何なのかはどのように判別されているのですか。
数や順番や型ならば、Color(int r, int g, int b)
とColor(int r, int g, int b, int a)
を作った人は意図的に(この例の場合は必然かもしれませんが...)引数の数を3と4で分けたということですよね。数や順番や型で完全に判別できるのは当たり前もしくは証明できるものなのですか。
Color (Java Platform SE 7 )
View | Android デベロッパー | Android Developers
2. 実引数(インスタンス化に関して?)
変数.メソッド名(new インターフェイス名(){public void メソッド名(仮引数){コンストラクタ;メソッド名(実引数);メソッド名(実引数);}});
というふうに、変数.メソッド名のあとの引数が複雑なものを見かけます。
引数の中でこのように複雑に続けられる理由を知りたい、どのようなルールと照らし合わせればこの型が理解できるのかのヒントをいただきたい、というのが質問です。言い換えれば、なぜnew インターフェイス名()のあとに長く書いたものを引数の中に入れられるのかという質問でもあります。
私の中で()の中に入れられるものは単純な感覚でしか理解しておらず、上記のように仮引数と実引数がある、自分の作った変数をわたせる、定数を書き込める...等といった認識です。この認識では引数の中に複雑な記述が入り込める理由が不明なのです。
追記
1. 仮引数
(View view, 仮引数)
の具体例は、
Java
1private OnItemClickListener messageClickedHandler = new OnItemClickListener() { 2 public void onItemClick(AdapterView parent, View v, int position, long id) 3 { 4 Toast.makeText(context,"You've got an event",Toast.LENGTH_SHORT).show(); 5 } 6 };
です。
AdapterView#HandlingUserSelections
引数がAdapterView parent, View v, int position, long id
となっているのです。
2. 実引数(インスタンス化に関して?)
おそらく「匿名クラス」の話だということがわかりました。なるほどそういうものがあるのかということがわかったので自分で調べます。なにか、調べてもわかりにくい部分などあれば回答よろしくお願いします。
回答4件
あなたの回答
tips
プレビュー