0


LinkedListという名前の特殊なサブクラスを作成するために 拡張すると仮定しますGroceryList。 クラスをその型として

GroceryListパラメータ化します。内のインスタンスとして アクセスしようとすると、NetBeans で次のコンパイル エラーが発生します。GroceryItem

GroceryItemGroceryList

incompatible types
 Required: GroceryItem
 Found:    Object
 where GroceryItem is a type-variable
   GroceryItem extends Object declared in class GroceryList


どうやらこれは「型消去」が原因であり、これまでのところ、この方法でクラスを「型変数」とクラスの両方として使用することに失敗しています...



以下に簡単な例を示します。

public class GroceryList<GroceryItem> extends LinkedList {

    public GroceryList() {
    }

    public double getItemPrice(GroceryItem item) {

        // compile-error occurring here:
        return item.getPrice();
    }

    // compile-error occurring here:
    public GroceryItem getGroceryItem(String name, String brand, double price) {

        // ...finding the grocery item based on the parameters here:
        // ...

        return item;
    }
} // end of class
4

1 に答える 1

3

タイプLinkedListを使用して拡張するGroceryItem

public class GroceryList extends LinkedList<GroceryItem>

または、次を使用してクラスをジェネリックとして定義します。

public class GroceryList<T extends GroceryItem> extends LinkedList<T>
于 2013-09-28T20:36:02.170 に答える