次のように、AsyncTaskのResultパラメーターに上限を設定しようとしています。
public class MyTask extends AsyncTask<T, Long, V extends Model>
コンパイラは、'extendsは予期されておらず、コンマを予期していると文句を言っています。
Modelを抽象クラスと通常のクラスとして書いてみました。
何か案は?
ありがとう、デビッド
次のように、AsyncTaskのResultパラメーターに上限を設定しようとしています。
public class MyTask extends AsyncTask<T, Long, V extends Model>
コンパイラは、'extendsは予期されておらず、コンマを予期していると文句を言っています。
Modelを抽象クラスと通常のクラスとして書いてみました。
何か案は?
ありがとう、デビッド
T
およびV
は未解決の型パラメータであるためMyTask
、それらでパラメータ化する必要があります。次のように宣言してみてください。
public class MyTask<T, V extends Model> extends AsyncTask<T, Long, V>
私もに変更calls
しましたclass
-それはタイプミスだったと思います。
あなたのコメントに応えて:
MyTask<T, V extends Model>
ここでMyClass
は、型パラメータとを宣言しています。タイプパラメータが宣言されている場合、オプションで。で制限できます。制限はありません-任意の参照型にすることができます。の上限は。-であるか、拡張するタイプである必要があります。T
V
extends
T
V
Model
Model
extends AsyncTask<T, Long, V>
拡張されていないクラスの宣言と同様にObject
、これはMyTask
拡張されていることを意味しますAsyncTask
-あなたはそれだけ理解していると確信しています。AsyncTask
3つの型パラメーターがあります。その宣言では、、、、およびと呼ばParams
れます。ここでは、これらの型パラメーターに型引数- 、、、およびを提供しています。Progress
Result
MyTask
T
Long
V
したがって、無制限の型パラメーターとしてMyTask
保持し、具象型で解決し、。で境界を設定します。Params
Progress
Long
Result
Model
ジェネリックスの優れた入門書については、 Javaチュートリアルを参照してください。その後、さらに質問がある場合は、 AngelikaLangerのGenericsFAQを参照してください。