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