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 line114Java問題

のコンストラクター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 に答える