有 Java API:Morphia
Morphia 类定义方法如下:
<T> T fromDBObject(Class<T> entityClass, com.mongodb.DBObject dbObject)
谁能解释一下<T> T and Class<T>
方法?该方法是否返回集合中类型 T 的类?
Interface DataStore 上的另一个 API:
<T,V> Query<T> find(Class<T> clazz, String property, V value)
What <T,V> Query<T> means? Is the method returning an object of type Query that is then surrounded by collection `<T,V>` and `<T>`. This part is very confusing.
whenever 尖括号 (< > )
是否正确?是涉及,它总是意味着涉及Java集合?
抱歉,我忘记将这个问题中的一些内容标记为代码,否则 SO 正在逃避改变问题的全部含义,因此@Vash 和@fiver 的 2 个答案与此编辑之前的问题一致。
感谢您指出一些教程,但请提供您在 Java 泛型方面的专业知识对问题的具体回答,这将帮助我更好地理解教程。
最佳答案
泛型不仅限于集合,而且集合是理解为什么需要泛型以及如何使用它们的好例子。
假设您创建一个新的 List
对象,你知道它只会包含特定类型的对象(例如,MyClass
对象)。如果您可以以某种方式在您的代码中指定它并且可以自动检查它,那么您可以确保不会将其他类型的对象插入到该列表中。此外,当其他开发人员阅读您的代码时,他们很容易理解该列表仅包含“MyClass”对象。
泛型让我们无需重写 List
就可以在代码中包含此类信息类(class)。事实上,List
功能独立于它包含的对象类型。所以要创建你自己的 List
你写这段代码:
List<MyClass> myList = new List<MyClass>();
现在您可以想象可以指定多个泛型类型的情况。这种情况的一个很好的例子是 Map
类(class)。您可以定义键和值的类型。所以你看到<K,V>
在Map
类声明(Map<K,V>
)。
除了类之外,泛型也可以用在方法/构造函数声明中。在你的例子中:
<T,V> Query<T> find(Class<T> clazz, String property, V value)
有一个方法有两个泛型类型 T 和 V,您可以在调用该方法时指定它们(或者它们可以由编译器推断)。在这里,<T,V>
在声明中明确指出此方法的功能。
关于java - 如何解释 <T> T 、 <T,V> Query<T> 、 Class<T> 等 Java 泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6503942/