2015-06-11 2 views
2

Я пытаюсь создать объект FlashCard в своем классе CardSet. Проблема в том, что объект My FlashCard не может быть создан. Ни один из моих классов не является абстрактным, и они не являются интерфейсами.Не удается создать объект

Ошибка возникает в строке 19 класса CardSet:
this.add (новая FlashCard (термин, определение)); .

public class CardSet<FlashCard> extends LinkedList<FlashCard> { 


private String nameOfSet; 
private FlashCard activeCard; 
private String term; 
private String definition; 


public CardSet(String nameOfSet) 
{ 
    this.nameOfSet = nameOfSet; 
} 


public void addCard(String term, String definition) 
{ 
    this.term = term; 
    this.definition = definition; 
    // cannot instantiate 
    this.add(new FlashCard(term, definition)); 
} 


} 
public class FlashCard { 

    private String definition; 
    private String term; 


    public FlashCard(String term, String definition) 
    { 
     this.term = term; 
     this.defintion = definition; 
    } 

    public String getTerm() 
    { 
     return term; 
    } 

    public String getDefintion() 
    { 
     return definition; 
    } 
} 
+1

В качестве побочного примечания: «Оплатить композицию над наследованием» - в этом сценарии кажется немного над вершиной, чтобы расширить коллекцию. Наличие списка карт в качестве члена вашего картона, вероятно, является лучшим подходом. Вы, конечно, не хотите раскрывать каждый (унаследованный) метод, не так ли? –

+0

@igknighton, пожалуйста, обновите свой вопрос, вместо того чтобы предоставлять дополнительную информацию в комментариях. –

ответ

3

Вы не можете класть конкретные классы вместо дженериков. Угловые скобки после имени класса используются, когда автор класса хочет, чтобы потребитель указывал тип. Вам нужно сделать следующее.

public class CardSet extends LinkedList<FlashCard> 
5

Вы hiding определение класса FlashCard. Убрать 1-й общий аргумент

public class CardSet extends LinkedList<FlashCard> { 
Смежные вопросы