Java不会让我用list调用方法

时间:2011-10-27 16:26:19

标签: java list

我正在尝试从列表中调用另一个类的方法,但它并没有让我这么做。这是我的电话声明:

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);

4 个答案:

答案 0 :(得分:2)

这些函数需要List,而您提供MyList<java.lang.String>。检查MyList是否实现了List接口(我敢打赌它没有)。

此外,您可能不应该使用原始List类型; <{1}} - 或List<String>,视情况而定 - 会更好。

答案 1 :(得分:0)

看起来您的MyList<T>类没有实现List接口。当然,您还没有显示我们MyList<T>,但这就是编译器错误所暗示的内容。

(顺便说一句,你的方法真的需要采用原始List类型而不是使用泛型吗?)

答案 2 :(得分:0)

代码searchList期待List<Object>,您似乎正在传递List<String>。我假设MyList实现了List

由于该方法都希望列表中的每个元素都是String,因此请List<String>

答案 3 :(得分: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接口,那么您可以在Web上查看大量解释和教程(这里是an example)。