2

我有这个java代码:

tgia = new ThumbsGalleryAdapter(this, profilePositionsOverlay.items);

我得到这个错误:

构造函数 ThumbsGalleryAdapter(SharePositionMapActivity, List) 未定义 SharePositionMapActivity.java /com.shopzeus.android.majorforms.activity.MainActivity/src/com/shopzeus/android/majorforms/activity line 114 Java 问题

的构造函数ThumbsGalleryAdapter是:

public ThumbsGalleryAdapter(Activity aActivity, List<ThumbsGalleryItem> aItems)

类型profilePositionsOverlay.items

List<SharedPositionMapItem>

该名称ThumbsGalleryItem指的是一个接口:

public interface ThumbsGalleryItem {
    public String getTitle();
    public String getRemotePath();
}

最后,SharedPositionMapItem 是一个实现 ThumbsGalleryItem 的类:

private static class SharedPositionMapItem extends OverlayItem implements ThumbsGalleryItem

当然,问题是:为什么List<SharedPositionMapItem>类型不兼容List<ThumbsGalleryItem>?因为SharedPositionMapItem implements ThumbsGalleryItem,我希望它们是兼容的。解决办法是什么?

4

2 回答 2

5
public ThumbsGalleryAdapter(Activity aActivity, List<? extends ThumbsGalleryItem> aItems)

有关更多详细信息,请参阅: http ://codeidol.com/java/javagenerics/Subtyping-and-Wildcards/The-Get-and-Put-Principle/ 以及 get-put 原理的解释

于 2012-10-24T13:40:57.583 回答
5

泛型是invarant自然的,这意味着它List<Integer>不是List<Object>

您需要的是任何类型的 ThumbsGalleryItem 列表,您可以像下面这样声明

 List<? Extends ThumbsGalleryItem>

您可以阅读有关通配符的更多信息

于 2012-10-24T13:41:12.487 回答