我正在处理一些示例代码然后出现了:
public abstract class RandomPool<T> extends Pool {
//Class...
}
<>
用于什么?为什么这些内部只有T
?对我来说这似乎是随机的。但是,如何在更长的制作程序时使用它呢?
谢谢并告诉我是否需要添加更多详细信息!
答案 0 :(得分:10)
T代表“类型”
答案 1 :(得分:3)
<强>泛型强>
T
是占位符,适用于运行时使用的任何类型。例如,您可以使用:
RandomPool<String> pool;
在这种情况下, T
会引用String
。
答案 2 :(得分:3)
该东西称为类型参数。
基本上,您的班级RandomPool
是一个通用类。它有一个类型参数,因此它可以使用调用者提供的不同类。参见像List这样的Java集合,它会更清晰。
另请注意,T
不是关键字,您可以按照自己喜欢的方式命名类型参数。这只是一个使用类似T的约定。有些集合使用E像Element。
答案 3 :(得分:1)
这是您声明类接受的Generic类型的方式。您提供的示例如下:
类型T的抽象类ObjectPool扩展了池
答案 4 :(得分:1)
非常短的desc T是一个编译器变量。发布你的代码你可以有一个随机的字符串,例如:RandomPool<String>
一个随机的Foos,eg: RandomPoo<Foo>
,......几乎任何东西。
请记住dom farr的链接
答案 5 :(得分:1)
实现模板的java方式(Generics)(在C ++中)。 T表示要用于实例化的特定对象的元素类型。
通过查看此示例,您可以轻松了解泛型:
Hashmap <String, int> hm = new HashMap<String,int>();
hm.put("k1",1);
hm.put("k2",2);
Iterator it = hm.iterator();
while (it.hasNext()){
String curr = it.next();
int value = hm.get(curr);
}
在这里,你可以理解Hashmap有两种类型(一般类型,你可以使用你想要的任何东西......从Natives到自定义类等等)。 在您发布的示例中,RandomPool应该使用特定的自定义类型进行实例化!因此,当您决定使用它时,您应该以这种方式编写代码(即):
RandomPool<String> myR = new RandomPool<String>();
答案 6 :(得分:1)
对此没什么好看的。它只是Java的rank-1参数多态的语法。