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 生成的接口或 parcelables 之一。List 可以选择用作“通用”类(例如,List)。对方接收到的实际具体类始终是一个 ArrayList,尽管生成该方法是为了使用 List 接口。映射中的所有元素

地图

必须是此列表中受支持的数据类型之一,或者是您声明的其他 AIDL 生成的接口或 parcelables 之一。泛型映射,(如Map形式的不支持。对方接收到的实际具体类始终是HashMap,虽然生成的方法是使用Map接口。

因此,如您所见,使用 Lists 的泛型仅支持有限,甚至 Maps 也不支持,因此不支持自定义参数化类型。

于 2013-01-10T08:15:35.813 回答