• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Android / AsyncTaskの第1引数)

Android/AsyncTaskの第1引数についての疑問

このQ&Aのポイント
  • AndroidのAsyncTaskの第1引数について疑問があります。
  • executeで引数を渡さないのになぜ引数を受け取れるのでしょうか?
  • また、自分で好きに型を選択できるということはどういう意味なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • titokani
  • ベストアンサー率19% (341/1726)
回答No.1

こんにちは >executeで引数を渡していないに executeの引数は可変長です。 つまり、引数なしでもいいですし、1個でも2個でも3個でもOKです。 http://developer.android.com/reference/android/os/AsyncTask.html 同様に、doInBackgroundの引数も可変長です。 つまり、executeで渡された引数と同じものが、そのままdoInBackgroundに渡される仕組みです。 ですから、 hoge.execute(); とした場合は、引数はありませんから、doInBackgroundでも何も受け取れません。 >・リンク先に、下記主旨の記述があるのですが、「自分で好きに型を選択できる」とはどういう意味なのでしょうか? >・paramsとして渡された型を、AsyncTask第1引数で宣言することで自由に変更できる? >・それとも、AsyncTask第1引数で指定することで、doInBackgroundのparamsとして渡されてくる型を制限(指定)できる? どちらも違います。 「executeの引数として、好きな型を使用できる」ということですね。 もちろん、doInBackgroundで受け取れる型も同じ型になります。勝手に変更されたりはしません。 どんな型を使用するのかはクラスの定義時に指定します。質問者さんが、「AsyncTask第1引数」とおっしゃっている場所ですね。 正式には、引数ではないので、「第一引数」とは呼びません。 「ジェネリック」で調べると、いろいろ詳しいことがわかると思います。

re97
質問者

お礼

回答ありがとうございました。 ・「execute」「doInBackground」、何れの引数も可変長なんですね ・勉強になりましたー

その他の回答 (1)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

■質問1 > ・executeで引数を渡していないに、なぜ引数を受け取れるのでしょうか? execute()を引数無しで呼んだら、doInBackground()にも引数は渡りません。その場合はparams.lengthが0になります。 ■質問2 > 「自分で好きに型を選択できる」とはどういう意味なのでしょうか? この場合の「自分」はAsyncTaskを継承したクラスを作る人です。execute()およびdoInBackground()の引数の型を、AsyncTaskを継承したクラスの作成時に決められます。 Androidフレームワークで予め決定された型のみ使えるという仕組みではない、ということです。 > ・それとも、AsyncTask第1引数で指定することで、doInBackgroundのparamsとして渡されてくる型を制限(指定)できる? こちらの意味です。execute()の引数の型も同時に指定されますから、指定した型と互換性のない値はexecute()に渡せません。 質問文にあるようにObjectが指定された場合は、Object型の変数に代入できるものなら何でもexecute()の引数に使えてしまうわけですが。

re97
質問者

お礼

回答ありがとうございました。 >execute()を引数無しで呼んだら、doInBackground()にも引数は渡りません。その場合はparams.lengthが0になります ・勘違いしていたことに気が付きました >この場合の「自分」はAsyncTaskを継承したクラスを作る人です。execute()およびdoInBackground()の引数の型を、AsyncTaskを継承したクラスの作成時に決められます ・この説明大変分かりやすかったです ・参考になりましたー

関連するQ&A