java - A が B Java を実装する場合のArrayList からArrayListへの変換
3 に答える
printList のメソッド署名を次のように変更してみてください。
public static void printList(ListableList<? extends Listable> list, String seperator){
ジェネリック型はポリモーフィックではありません。つまり、ルールは ListableのスーパータイプではListable<Listable>
ありません。Listable のサブタイプであるすべてのものを List が受け入れることができることを通知するには、メソッド シグネチャで上限のあるワイルドカードを含むジェネリックを使用する必要があります。を使用すると、リストに何も追加できないことに注意してください。すなわち、 List<Rule>
sub-type
Generics with upperbounded wildcards
public static void printList(ListableList<? extends Listable> list, String seperator){
list.add(whatever); // is not allowed
便利なリンク
使ってください:
public static void printList(ListableList<? extends Listable> list, String seperator){
これは、list が、Listable のサブクラスを含む読み取り専用のコレクションであることを意味します。
ListableList<Rule>
ListableList<Listable>
非ルール オブジェクトを に追加できるため、は に割り当て互換性がありませんListableList<Listable>
。
メソッド宣言はのようになりprintList(ListableList<? extends Listable> list, String seperator)
ます。ジェネリックにします。