[英]The method in the type is not applicable for the arguments
我試圖制作紙牌游戲,但我遇到了一些小問題。 我正在嘗試從我的新列表卡中添加另一個類的卡currentCard。 我得到錯誤SingleLinkedList類型中的方法addLast(Card)不適用於參數(DoubleLinkedList.Element)。
public class CardList<E extends Comparable<? super E>> extends SingleLinkedList<E> {
private SingleLinkedList<Card> cards;
private int cardRow;
public CardList(int cardRow) {
this.cardRow = cardRow;
cards = new SingleLinkedList<Card>();
cards.addLast(CardDeck.currentCard); // here is the error
}
}
我在SingleLinkedList中的addLast方法:
public class SingleLinkedList<E> {
protected transient Element<E> head;
protected transient int size;
public SingleLinkedList() {
head = null;
size = 0;
}
public void addLast(E value) {
Element<E> temp = new Element<E>(value, null);
if (head != null) {
Element<E> finger = head;
while(finger.next != null) {
finger = finger.next;
}
finger.next = temp;
} else {
head = temp;
}
size++;
}
元素類(在singlelinkedlist類中)
protected static class Element<E> {
public E value;
public Element<E> next;
public Element(E value, Element<E> next) {
this.value = value;
this.next = next;
}
}
和DoubleLinkedList類中的currentCard變量
public class CardDeck<E extends Comparable<? super E>> extends DoubleLinkedList<E> {
private DoubleLinkedList<Card> cards;
static Element<Card> currentCard;
我知道問題是我正在嘗試將一個元素插入到期望獲得卡片的方法中,但我只是想知道如何將它從泛型轉換為特定類型(卡片)或其他東西。 我一直在尋找一些關於泛型的好教程,但還沒找到能直接幫助我的東西。 因此,如果某人有關於直接解決我的問題的一些提示,或者有關於該主題的教程/描述的良好鏈接,我將非常感謝!
如果您需要更多信息,或者我需要改寫一些東西請告訴我:)
我認為你應該使用Card
類型的currentCard
變量而不是Element<Card>
類型。
你需要從它所帶來的元素中提取卡片 currentCard.value
應該做你想要的。
但也許你應該節省一些麻煩,而只是使用java.util.List 。
我不確定你為什么編寫自己的LinkedList。 也許這是家庭作業? 正如josaphatv建議的那樣,使用Java LinkedList會解決你實現LinkedList的問題。
主要問題就像josaphatv提到的那樣。 你應該傳入一張Card,它是currentCard.value而不是Element本身。 而且您不需要將E轉換為Card(盡管可以使用類型轉換(Card)值。
但是,正如我所看到的,你沒有調用任何特定的Card方法,也沒有在Card上進行任何TypeStrict操作。 所以真的,沒有必要將E轉換為Card。
現在,在設計和實施方面,這里有很多不好的做法,我只會記下2個基本的東西。
在Element類中,通過將屬性設置為public來違反Encapsulation。 這意味着說任何其他類都可以修改其內容的屬性。 在OOP中,不建議這樣做。
如上所述,為什么重新發明輪子,使用Java.util.List可以做得更好,嘗試在谷歌上搜索LinkedList java。
希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.