我相对较新的Java,我最近遇到了一种我从未见过的语法。
public class loadSomeData extends AsyncTask<String, Integer, String>{ etc..}
令我困惑的部分是&lt;&gt;之间的东西。括号。我理解这个类中每个类型的用途,但为什么要在类声明中声明它们呢?
更具体地说是什么:在Java中调用<DataType>
以便我可以研究它?
谢谢
答案 0 :(得分:3)
您正在寻找"generics" in Java。
简而言之,集合类(或任何类,实际上)可以使用该语法声明参数化类型,以便类的用户可以确保只有相同类型的对象将存储在其集合中(或以其他方式操作)通过它)。
在泛型之前,集合上没有类型安全性,例如列表:
List numbers = new ArrayList();
numbers.add(Integer.valueOf(123)); // OK
numbers.add("foo"); // Uh-oh!
但现在您可以确保只能添加您声明的类型:
List<Number> numbers = new ArrayList<Number>();
numbers.add(Integer.valueOf(123)); // OK
numbers.add("foo"); // Compile-time error!
答案 1 :(得分:3)
您正在看Java的Generics功能。这是一个很好的教程:http://docs.oracle.com/javase/tutorial/java/generics/index.html
答案 2 :(得分:0)
<DataType>
结构称为AsyncTask
类的类型参数。 AsyncTask
是genericized Java类。这意味着它可以在其操作中使用不同的泛型类。请参阅上面的链接。
答案 3 :(得分:0)
AsyncTask
是泛型类型,因为它可以使用java.util.List
,java.util.Set
和许多标准Java类进行参数化。
阅读Java tutorial about generics了解详情。
在类声明中声明它们很有用,因为loadSomeData(应该命名为LoadSomeData,甚至更好:SomeDataLoader)作为处理String,Integer和String的AsyncTask的特化,而不是任何其他类型。