7
4

3 に答える 3

7

printList のメソッド署名を次のように変更してみてください。

public static void printList(ListableList<? extends Listable> list, String seperator){

ジェネリック型はポリモーフィックではありません。つまり、ルールは ListableスーパータイプではListable<Listable>ありません。Listable のサブタイプであるすべてのものを List が受け入れることができることを通知するには、メソッド シグネチャで上限のあるワイルドカードを含むジェネリックを使用する必要があります。を使用すると、リストに何も追加できないことに注意してください。すなわち、 List<Rule>sub-typeGenerics with upperbounded wildcards

public static void printList(ListableList<? extends Listable> list, String seperator){
      list.add(whatever); // is not allowed

便利なリンク

于 2013-03-11T12:28:28.433 に答える
2

使ってください:

public static void printList(ListableList<? extends Listable> list, String seperator){

これは、list が、Listable のサブクラスを含む読み取り専用のコレクションであることを意味します。

ListableList<Rule>ListableList<Listable>非ルール オブジェクトを に追加できるため、は に割り当て互換性がありませんListableList<Listable>

于 2013-03-11T12:29:02.673 に答える
1

メソッド宣言はのようになりprintList(ListableList<? extends Listable> list, String seperator)ます。ジェネリックにします。

于 2013-03-11T12:30:53.453 に答える