Java - 什么是<>用过它的名字是什么?

时间:2011-01-10 17:09:35

标签: java generics

我正在处理一些示例代码然后出现了:

public abstract class RandomPool<T> extends Pool {
     //Class...
}

<>用于什么?为什么这些内部只有T?对我来说这似乎是随机的。但是,如何在更长的制作程序时使用它呢?

谢谢并告诉我是否需要添加更多详细信息!

7 个答案:

答案 0 :(得分:10)

请参阅Java Generics

T代表“类型”

答案 1 :(得分:3)

<强>泛型

T是占位符,适用于运行时使用的任何类型。例如,您可以使用:

RandomPool<String> pool;
在这种情况下,

T会引用String

阅读Java Generics Tutorial

答案 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参数多态的语法。