一尘不染

<T>(尖括号)在Java中是什么意思?

java

我目前正在学习Java,最近被尖括号(<>)所困扰。它们到底是什么意思?

public class Pool<T>{
    public interface PoolFactory<T>{
        public T createObject();
    }
    this.freeObjects= new ArrayList<T>(maxsize)
}

什么<T>意思 这是否意味着我可以创建类型的对象T


阅读 1011

收藏
2020-02-29

共1个答案

一尘不染

<T>是泛型,通常可以理解为“ T型”。它取决于<>左侧的实际含义。

我不知道什么是Pool或者PoolFactory是,不过你还别说ArrayList<T>,这是一个标准的Java类,所以我会跟那个。

通常,你不会在其中看到“ T”,而会看到另一种类型。因此ArrayList<Integer>,例如,如果看到,则表示“ An ArrayListof Integers”。例如,许多类都使用泛型来约束容器中元素的类型。另一个示例是HashMap<String, Integer>,表示“具有String键和Integer值的映射”。

你的Pool示例有点不同,因为你正在定义一个类。因此,在这种情况下,你正在创建一个可以由其他人实例化的类,以代替T。例如,我可以Pool<String>使用你的类定义来创建类型的对象。那将意味着两件事:

  • Pool<String>的接口将PoolFactory<String>带有createObject返回Strings 的方法。
  • 在内部,Pool<String>包含ArrayList字符串。

这是个好消息,因为在另一时间,我可以创建一个Pool<Integer>将使用相同代码的代码,但是Integer无论你T在源代码中看到的是什么。

2020-02-29