1

次の AIDL ファイルがあります

package com.mindtherobot.samples.tweetservice;

interface TweetCollectorListener {

  void handleTweetsUpdated();
}

ここまでAIDLでジェネリック作品を作ってみました。うまくいきません。次のコードは、エラーにフラグを立てます。

package com.mindtherobot.samples.tweetservice;

interface TweetCollectorListener<E> {

  E handleTweetsUpdated();
}

AIDL ではジェネリックが機能しないようです。ただし、Android インターフェイス定義言語はジェネリックについてあまり話していないので、それは私の推測です。

確認したいのですが、ジェネリックが AIDL で機能しないのは本当ですか? 回避策はありますか?

4

1 に答える 1

3

公式AIDLドキュメントから:

リスト

List 内のすべての要素は、このリストでサポートされているデータ型のいずれか、または宣言した他の AIDL 生成インターフェイスまたは Parcelable のいずれかである必要があります。List は、必要に応じて「ジェネリック」クラス (List など) として使用できます。メソッドは List インターフェイスを使用するように生成されますが、反対側が受け取る実際の具象クラスは常に ArrayList です。のすべての要素をマップする

地図

このリストでサポートされているデータ型のいずれか、または宣言した他の AIDL 生成インターフェイスまたは Parcelable のいずれかである必要があります。一般的なマップ (Map 形式のものなど) はサポートされていません。メソッドは Map インターフェイスを使用するように生成されますが、反対側が受け取る実際の具象クラスは常に HashMap です。

したがって、ご覧のとおり、リストを使用したジェネリックのサポートは限定されており、マップでさえサポートされていないため、カスタムのパラメーター化された型はサポートされていません。

于 2013-01-10T08:15:35.813 に答える