2011-10-27 47 views
0

我想從列表中調用另一個類的方法,但它不會讓我。這裏是我的調用語句:Java不會讓我給列表調用方法

case 2: pm.displayList(list); 
     break; 

case 3: pm.searchList(scan, list); 
     break; 

這裏是我的方法:

public void displayList(List list){ 
    System.out.print(list); 
} 
//search for element 
public void searchList(Scanner scan, List list){ 
    System.out.println("Search for element:\t"); 
    String p = scan.nextLine(); 

    if (list.contains(p)) 
     System.out.println(p + " is in the list"); 
    else 
     System.out.println(p + " is not in the list."); 
} 

這是我的錯誤:

MyProgram7.java:50: displayList(java.util.List) in Prog7Methods cannot be applied to (MyList<java.lang.String>) 
      case 2: pm.displayList(list); 
           ^
MyProgram7.java:53: searchList(java.util.Scanner,java.util.List) in Prog7Methods cannot be applied to (java.util.Scanner,MyList<java.lang.String>) 
      case 3: pm.searchList(scan, list); 
+1

什麼是MyList? –

回答

2

的功能期待List,而你提供一個MyList<java.lang.String>。檢查MyList實現List接口(我敢打賭它沒有)。

另外,您可能不應該使用原始List類型;視情況而定 - List<String> - 或MyList<String>將是更可取的。

+0

'參數來聲明的,謝謝你的幫助。現在,當我運行程序並嘗試搜索元素時,它會打印「搜索元素」,然後自動顯示「不在列表中」。它不應該等待我輸入的內容嗎? – Josh

+0

@Josh:如果不知道列表中的內容,您提供給contains()的什麼值,以及沒有看到「MyList.contains()」的源代碼(或者最好是整個類)。 – NPE

+0

我發現我的錯誤,非常感謝! – Josh

0

它看起來像你的MyList<T>類未實現的List接口。當然,你還沒有顯示我們MyList<T>,但這就是編譯器錯誤的建議。

(順便說一句,做你的方法確實需要採取原始List類型,而不是使用泛型的?)

+0

你上次陳述的含義是什麼? – Josh

+0

@Josh:你的方法是用'(List list)'而不是(說)'(List list)'或'(List list)' –

0

代碼searchList期待List<Object>,看起來您正在傳遞一個List<String>。我假設MyList implements List

由於兩個方法期望列表中的每個元素是一個String,採取List<String>

0

喬希,這是一個變型on your question here?檢查my answer - 你想確保MyList實現List接口。

public class MyList<T> implements List<T> { 
    // you will need to provide implementations for all the 
    // methods that make up the List interface here in order to make it compile 
} 

如果您正在使用Java接口掙扎,有很多在網絡上的說明和教程你可以看看(這裏是an example)。