2

それは可能であるべきではありませんか?そうでない場合、同様にそれを行う方法はありますか?

public abstract class BaseItem {
}

public class SpecificItem extends BaseItem {
    public int value;
}


public class AnAdapter{
    public AnAdapter(SparseArray<BaseItem> items){
    }
}

public class DifferenClass{
    public DifferenClass(){
        SparseArray<SpecificItem> items = new SparseArray<SpecificItem>();
        AnAdapter anAdapter = new AnAdapter(items); // here is wrong type   
    }
}

-------- 編集: 更新されました。特定の要素をより一般的なコンテナに追加する唯一の方法ですか? このすべてのキャスティングで少し汚れているように見えます。しかし、動作します...

public abstract class BaseItem {
}

public class SpecificItem extends BaseItem {
    public int value;
}


public class AnAdapter{
    public AnAdapter(SparseArray<? extends BaseItem> items){
    }
}

public class DifferenClass{
    DifferenClass(){
        SparseArray<? extends BaseItem> items = new SparseArray<BaseItem>();
        ((SparseArray<SpecificItem>)items).append(0,new SpecificItem());
    }
}
4

2 に答える 2

3

ワイルドカードを使用する

public class AnAdapter{
    public AnAdapter(SparseArray<? extends BaseItem> items){
    }
}
于 2013-11-11T17:02:59.890 に答える