java - <T>(尖括号)在 Java 中意味着什么?

标签 java generics

我正在学习Java,最近被尖括号(<>)难住了。它们到底是什么意思?

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

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

最佳答案

<T>是一个泛型,通常可以读作“T 类型”。这取决于 <> 左侧的类型实际含义。

我不知道Pool是什么或PoolFactory是,但你还提到ArrayList<T> ,这是一个标准的 Java 类,所以我将讨论它。

通常,您不会在那里看到“T”,您会看到另一种类型。所以如果你看到ArrayList<Integer>例如,这意味着“ArrayListInteger s”。例如,许多类使用泛型来约束容器中元素的类型。另一个例子是 HashMap<String, Integer> ,这意味着“带有 String 键和 Integer 值的 map 。”

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

  • 我的Pool<String>将有一个接口(interface) PoolFactory<String>createObject返回 String 的方法
  • 在内部,Pool<String>将包含 ArrayList字符串。

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

关于java - <T>(尖括号)在 Java 中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57497302/

相关文章:

c# - 当参数声明为基类型时,如何获取继承对象的属性?

java - 根据输入的String值返回Class变量

java - 为什么要对 List< 进行泛型转换?将 Set..> 扩展到 List<Set..> 在 Sun JDK 6 上成功但在 Oracle JDK 7 上编译失败?

Java - 'Kill' 机器人正在运行

java - 如何在不使用cookie的情况下在spring Controller 中获取客户端时区偏移量?

java - 使用 OpenNTF Domino API 的 ViewEntryCollection - 比 getNthEntry(int i) 性能更高

java - 使用泛型从子接口(interface)重写接口(interface)方法的正确方法是什么?

java - 具有多个身份验证提供程序的 Spring 安全性 - UsernameNotFoundException

javax.naming.NamingException,Tomcat7 和 Struts2 无法通过 JNDI 访问数据库资源

c# - 如何在字典中制作通用 Func<T>