2011-03-22 171 views
0

我有一个类MySpecialClass <T extends Comparable<T>>Java泛型 - 转换列表<object>列出<T>

我努力做到以下几点:

toItemList() - >应采取List<Dog>并将其转换为List<T>所以MySpecialClass可以操作在上面。

fromItemList() - >应将其存入内存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的工作,所以不要判断:)

+0

能否请你描述它吗?像这两个方法的签名是什么:'toItemList()'和'fromItemList()'? – anubhava 2011-03-22 18:50:01

+0

更新了帖子,如果有帮助,谢谢 – dropsOfJupiter 2011-03-22 18:56:45

回答

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

+0

当我执行以下操作时出现错误:MySpecialClass x = new MySpecialClass (); 绑定不匹配:类型Dog不是有效的替代参数的有界参数>类型MySpecialClass dropsOfJupiter 2011-03-22 20:47:14

+0

同样当我添加Dog implements时Comparable我得到“Comparable是原始类型。对泛型类型的引用Comparable 应该参数化“ – dropsOfJupiter 2011-03-22 20:49:41

+0

我实际上在Eclipse中创建了所有3个类 - MySpecialClass,Main和Dog,并适当地编辑了我的示例。唯一的变化是,在Dog课程中,我必须确保我说'实现可比较的'。如果仍然不能解决它,我会发布我的完整代码示例。 – Riggy 2011-03-23 11:55:28

0

看来你不懂泛型。在泛型类定义中,T代表Type参数,因此只要在类示例中扩展Comparable,就可以发送cat,dog。这里是fromItemList的实现我的理解:

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

} 

没有必要有toItemList方法你有型

+0

这实际上是做了什么?不是每个T都必须扩展Object吗?您建议的方法将立即返回列表。 – Riggy 2011-03-22 20:13:18

+0

这就是我从他的问题 – 2011-03-22 20:22:31

+0

了解,这将是列表 fromItemList(名单名单){[如何实际转换关系吗?]} – dropsOfJupiter 2011-03-22 20:50:34