我有以下AIDL文件
package com.mindtherobot.samples.tweetservice;
interface TweetCollectorListener {
void handleTweetsUpdated();
}
到目前为止,我试图在AIDL中制作通用作品。它不起作用。以下代码将标记错误。
package com.mindtherobot.samples.tweetservice;
interface TweetCollectorListener<E> {
E handleTweetsUpdated();
}
似乎泛型在AIDL中不起作用。但是,这是我的猜测,因为Android Interface Definition Language并没有谈论泛型。
只是想确认一下,它是真的通用在AIDL中不起作用吗?有没有解决方法?
答案 0 :(得分:3)
列表
List中的所有元素必须是受支持的数据类型之一 在此列表或其他AIDL生成的接口之一或 你声明的parcelables。 List可以可选地用作a “generic”类(例如,List)。实际的具体课程 另一方收到的始终是一个ArrayList,尽管如此 生成方法以使用List接口。映射
中的所有元素地图
必须是此列表中支持的数据类型之一或其中一个 您声明的其他AIDL生成的接口或parcelables。 通用地图(例如地图形式的地图不是 支持的。另一方收到的实际具体类是 总是一个HashMap,虽然生成的方法是使用Map 接口
因此,正如您所看到的,对使用列表的泛型只有有限的支持,甚至不支持地图,因此不支持自定义参数化类型。