java泛型 - 将List <object>转换为List <t> </t> </object>

时间:2011-03-22 18:44:57

标签: java generics

我有一个班级MySpecialClass <T extends Comparable<T>>

我正在尝试执行以下操作:

toItemList() - &gt;应该List<Dog>并将其转换为List<T>,以便MySpecialClass可以对其进行操作。

fromItemList() - &gt;应该占用内存List<T>并将其转换为对象列表。因此,如果我有List,则应将其转换为List<Dog>,这样我就可以在完成所有操作后进行反向转换。

如何在Java中构建类似的东西?我的MySpecialClassList<T>一起使用,这就是我需要的原因。

public List<T> toItemList(List<dogs> list or List<cats> list){
// how to convert?      

    }



public List<dog> or List<cat>  fromItemList(){
      //local _inMemoryList (which is List<T>) convert to List<dog> or List<cat> depending on what MySpecialClass T is   
 // how to convert?     

        }

PS我是java的新手,总是使用.net所以不要判断:)

2 个答案:

答案 0 :(得分:5)

我认为你错误地理解了<T>在你的例子中做了什么。 T是实现Comparable的任何其他类的占位符。

让我们快速了解一下这是如何工作的,使用MySpecialClass上面的定义。

public class Dog implements Comparable<Dog> {

}

public class Cat {

}
// This works because Dog implements Comparable
MySpecialClass<Dog> x = new MySpecialClass<Dog>();

// This will not because Cat does not implement Comparable
MySpecialClass<Cat> x = new MySpecialClass<Cat>();

有许多关于如何在Java中使用泛型的好教程,可能从Oracle tutorial开始。

答案 1 :(得分:0)

似乎你不了解泛型。在泛型类定义中,T代表Type参数,因此只要在类示例中扩展Comparable,您就可以发送任何您想要的cat,dog。这是我理解的fromItemList的实现:

List<Object> fromItemList(List<T> list){

}

没有必要使用toItemList方法,因为你有Type