Java 方法参数不采用实现接口的泛型

Java 方法参数不采用实现接口的泛型,java,generics,interface,implements,Java,Generics,Interface,Implements,我这里似乎有个奇怪的问题。我有一个界面,称为可排序。然后我有另一门课,像这样: public class LeftSort { private List<Sortable> list; public <T extends Sortable> LeftSort(List<T> list) { this.list = list; } } public class Foo implements Sortable {}

我这里似乎有个奇怪的问题。我有一个界面,称为
可排序
。然后我有另一门课,像这样:

public class LeftSort {

    private List<Sortable> list;

    public <T extends Sortable> LeftSort(List<T> list) {
        this.list = list;
    }

}
public class Foo implements Sortable {}
在JUnit测试中执行以下操作时:

List<Foo> list = new ArrayList<Foo>();
// Initialise... blah blah.

LeftSort sorter = new LeftSort(list);
List List=new ArrayList();
//初始化。。。胡说八道。
LeftSort sorter=新的LeftSort(列表);
我收到以下错误:

构造函数LeftSort(List)未定义

我发誓你可以像我一样在泛型中使用接口。这里有什么我做错的吗


我还在做
private List时遇到麻烦,通常为整个类定义泛型类型,如下所示:

public class LeftSort<T extends Sortable> {
    private List<T> list;
    public LeftSort(List<T> list) {
        this.list = list;
    }
}
公共类LeftSort{
私人名单;
公共左排序(列表){
this.list=列表;
}
}

通过这种方式,您可以使用
newlistsort(list)
实例化
LeftSort
(假设您使用的是Java 7+)。

通常为整个类定义泛型类型,如下所示:

public class LeftSort<T extends Sortable> {
    private List<T> list;
    public LeftSort(List<T> list) {
        this.list = list;
    }
}
公共类LeftSort{
私人名单;
公共左排序(列表){
this.list=列表;
}
}

通过这种方式,您可以使用
newlistsort(list)
实例化
LeftSort
(假设您使用的是Java 7+)。

这不是我得到的错误:


这不是我得到的错误:


请注意,构造函数实际上并不编译:

public <T extends Sortable> LeftSort(List<T> list) {
    this.list = list;
}

请注意,构造函数实际上并不编译:

public <T extends Sortable> LeftSort(List<T> list) {
    this.list = list;
}

“通常”但不总是。“通常”但不总是。嗯。。。这似乎还是给了我同样的错误。我想你还有另一个问题。试着发布所有相关的代码来理解这个问题。不,不,我刚刚意识到。真是个白痴。。。我导入了错误的类,因为它是JUnit测试文件,而我真正的类是“test”,它具有相同的名称。。。。谢谢你抽出时间。这终于成了一个问题:)太好了。不客气:)嗯。。。这似乎还是给了我同样的错误。我想你还有另一个问题。试着发布所有相关的代码来理解这个问题。不,不,我刚刚意识到。真是个白痴。。。我导入了错误的类,因为它是JUnit测试文件,而我真正的类是“test”,它具有相同的名称。。。。谢谢你抽出时间。这终于成了一个问题:)太好了。不客气:)啊,对不起,我的月食没有马上告诉我错误,我做错了。然而,另一个类在尝试实例化时仍然抛出错误…哦,天哪!我上错了课,谢谢你的帮助,安迪,谢谢你浪费了我的时间。我检查了这个问题是否要结束,因为虽然你的答案仍然在很大程度上回答了我问题中的一个错误,但整个事情本来就不应该被提出。啊,对不起,我的Eclipse没有立即告诉我错误,我做错了。然而,另一个类在尝试实例化时仍然抛出错误…哦,天哪!我上错了课,谢谢你的帮助,安迪,谢谢你浪费了我的时间。我已经检查了这个问题,因为虽然你的答案仍然在很大程度上回答了我的问题中的一个失败,但整个问题本来就不应该被提出。
public <T extends Sortable> LeftSort(List<T> list) {
    this.list = list;
}
public class LeftSort {

    private List<? extends Sortable> list;

    public LeftSort(List<? extends Sortable> list) {
        this.list = list;
    }

}