bugfix> java > 投稿

だから私はジェネリックに関する次の問題を理解するのに問題があります。

これは私のクラスの小さな平和です:

public class BaseFiller <T> {
private final List<T> act_Bwa;
public <T extends List<T>> Map<Integer, String> makeMapFromList() {
    List<T> res = new ArrayList<>();
    for (List<T> list : act_Bwa) {
        res.addAll(list);
    }
    //removes all duplicates from List by DbNr
    List<T> resWithoutDuplicates = res.stream()
            .filter(distinctByProperty(intProperty))
            .collect(Collectors.toList());
    //creates HashMap (Key = DbNr, Value = name)
    return mapListToHashMap(resWithoutDuplicates, intProperty, stringProperty);
}

}

次のエラーメッセージが表示されます:

必要なタイプ:T

提供:リスト

それぞれ: エラー:(81、37)java:互換性のないタイプ:Tをjava.util.Listに変換できません

forループでエラーが発生します。

それで、この場合、私は何を間違っているのでしょうか?誰かが私が間違っていることを教えてもらえますか?

回答 1 件
  • あなたはこれを行うことができます:

    public <R extends List<T>> Map<Integer, String> makeMapFromList() {
        List<R> res = new ArrayList<>();
        for (List<R> list : act_Bwa) {
            res.addAll(list);
        }
        //removes all duplicates from List by DbNr
        List<R> resWithoutDuplicates = res.stream()
                .filter(distinctByProperty(intProperty))
                .collect(Collectors.toList());
        //creates HashMap (Key = DbNr, Value = name)
        return mapListToHashMap(resWithoutDuplicates, intProperty, stringProperty);
    }
    
    

    または削除 <T extends List<T>> 使用したい場合 T クラスから。

あなたの答え