今天早上我遇到了这段代码,我完全不知道这意味着什么。谁能解释我这些<T>代表什么?例如:

public class MyClass<T>
...

some bits of code then

private Something<T> so;

private OtherThing<T> to;

private Class<T> c;

谢谢

最佳答案

您碰到了“泛型”。在guide中对它们进行了很好的解释。

简而言之,它们允许您指定存储类所包含的类型,例如ListSet。如果您编写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的类”。

10-02 03:07