1

次のように、AsyncTaskのResultパラメーターに上限を設定しようとしています。

public class MyTask extends AsyncTask<T, Long, V extends Model> 

コンパイラは、'extendsは予期されておらず、コンマを予期していると文句を言っています。

Modelを抽象クラスと通常のクラスとして書いてみました。

何か案は?

ありがとう、デビッド

4

1 に答える 1

2

TおよびVは未解決の型パラメータであるためMyTask、それらでパラメータ化する必要があります。次のように宣言してみてください。

public class MyTask<T, V extends Model> extends AsyncTask<T, Long, V>

私もに変更callsしましたclass-それはタイプミスだったと思います。

あなたのコメントに応えて:

MyTask<T, V extends Model>

ここでMyClassは、型パラメータとを宣言しています。タイプパラメータが宣言されている場合、オプションで。で制限できます。制限はありません-任意の参照型にすることができます。の上限は。-であるか、拡張するタイプである必要があります。TVextendsTVModelModel

extends AsyncTask<T, Long, V>

拡張されていないクラスの宣言と同様にObject、これはMyTask拡張されていることを意味しますAsyncTask-あなたはそれだけ理解していると確信しています。AsyncTask3つの型パラメーターがあります。その宣言では、、、、およびと呼ばParamsれます。ここでは、これらの型パラメーターに型引数- 、、、およびを提供しています。ProgressResultMyTaskTLongV

したがって、無制限の型パラメーターとしてMyTask保持し、具象型で解決し、。で境界を設定します。Params ProgressLongResultModel

ジェネリックスの優れた入門書については、 Javaチュートリアルを参照してください。その後、さらに質問がある場合は、 AngelikaLangerのGenericsFAQを参照してください。

于 2013-01-30T19:55:24.943 に答える