[英]Can't find symbol - method (generic method)
我有兩節課。 一個是詞組,
import java.util.List;
import java.util.ArrayList;
@SuppressWarnings("unchecked")
public class Phrase
{
List<String> papers = new ArrayList();
String name = "";
boolean multiple = false;
public Phrase(String name, List list)
{
this.name = name;
this.papers = list;
if(list.size() > 1)
{
multiple = true;
}
}
public Phrase(String name, String pName)
{
this.name = name;
this.papers.add(pName);
multiple = false;
}
public void addPaper(String paper)
{
papers.add(paper);
multiple = true;
}
public String getPhrase()
{
return name;
}
public List<String> getPapers()
{
return papers;
}
}
另一個是KeyedLinkedList。
public class KeyedLinkedList<K,Phrase>
{
private KeyNode first;
private int size;
private class KeyNode
{
K key;
Phrase value;
KeyNode previous;
KeyNode next;
public KeyNode(K key, Phrase value, KeyNode previous, KeyNode next)
{
this.key = key;
this.value = value;
this.previous = previous;
this.next = next;
}
}
public int size()
{
return size;
}
public boolean put(K key, Phrase val)
{
if(isEmpty())
{
first = new KeyNode(key, val, null, null);
first.next = first;
first.previous = first;
size++;
return true;
}
KeyNode temp = first;
if(temp.key.equals(key))
{
//****ERROR LOCATION****//
temp.value.addPaper(val.getPapers().get(0));
//****ERROR LOCATION****//
if(temp.value.getPapers().size() < 3)
return false;
return true;
}
temp = temp.next;
while(temp != first)
{
if(temp.key.equals(key))
{
temp.value.addPaper(val.getPapers().get(0));
if(temp.value.getPapers().size() < 3)
return false;
return true;
}
temp = temp.next;
}
temp.previous.next = new KeyNode(key, val, temp.previous.next, first);
first.previous = temp.previous.next;
size++;
return true;
}
}
當我對此進行編譯時,出現錯誤:“找不到符號-方法getPapers()”
我的短語類中顯然有getPapers()方法,而參數中的val是短語對象。 我想知道我需要做什么來解決此問題。 該錯誤在put方法的一半發生。
public class KeyedLinkedList<K,Phrase>
// ^^^^^^
在這里,您要聲明一個類型變量,該變量與Phrase
類具有相同的名稱並對其進行陰影處理。 用Phrase
類型聲明的任何變量都引用此類型變量,而不是Phrase
類。
由於我不知道您的意圖是什么,因此我只能建議刪除該內容。
public class KeyedLinkedList<K>
順便說一句,不要這樣做:
List<String> papers = new ArrayList();
// ^^^^^^^^^
這稱為原始類型 ,很糟糕,沒有理由使用它。 而是執行new ArrayList<String>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.