今天早上我遇到了这段代码,我完全不知道这意味着什么。谁能解释我这些<T>
代表什么?例如:
public class MyClass<T>
...
some bits of code then
private Something<T> so;
private OtherThing<T> to;
private Class<T> c;
谢谢
最佳答案
您碰到了“泛型”。在guide中对它们进行了很好的解释。
简而言之,它们允许您指定存储类所包含的类型,例如List
或Set
。如果您编写Set<String>
,则说明该集合必须仅包含String
,如果尝试在其中放置其他内容,则会出现编译错误:
Set<String> stringSet = new HashSet<String>();
stringSet.add("hello"); //ok.
stringSet.add(3);
^^^^^^^^^^^ //does not compile
此外,泛型可以做什么的另一个有用的示例是,它们使您可以更紧密地指定抽象类:
public abstract class AbstClass<T extends Variable> {
这样,扩展类不必扩展
Variable
,但是他们需要扩展扩展Variable
的类。因此,可以像下面这样定义处理
AbstClass
的方法:public void doThing(AbstClass<?> abstExtension) {
其中
?
是通配符,表示“所有用某些AbstClass
扩展Variable
的类”。