我目前正在学习Java,最近被尖括号(<>)困扰了。他们究竟是什么意思?
public class Pool<T>{
public interface PoolFactory<T>{
public T createObject();
}
this.freeObjects= new ArrayList<T>(maxsize)
}
什么<T>
意思?这是否意味着我可以创建一个类型的对象T
?
发布于 2018-10-09 13:56:47
<T>
是通用的,通常可以读作“T型”。它取决于<>左边的类型实际意味着什么。
我不知道是什么,Pool
或者PoolFactory
你也提到ArrayList<T>
,这是一个标准的Java类,所以我会谈到它。
通常,你不会看到“T”,你会看到另一种类型。因此,如果您看到ArrayList<Integer>
,例如,这意味着“An ArrayList
of Integer
s。” 例如,许多类使用泛型来约束容器中元素的类型。另一个例子是HashMap<String, Integer>
“带有String
键和Integer
值的地图”。
您的Pool示例有点不同,因为您正在定义一个类。因此,在这种情况下,您正在创建一个其他人可以用特定类型代替T进行实例化的类。例如,我可以Pool<String>
使用您的类定义创建一个类型的对象。这意味着两件事:
Pool<String>
将有一个返回s PoolFactory<String>
的createObject
方法的接口String
。Pool<String>
它将包含一个ArrayList
字符串。这是一个好消息,因为在另一个时间,我可以来创建一个Pool<Integer>
使用相同代码的东西,但Integer
无论你T
在源头看到的地方都有。
发布于 2018-10-09 14:33:46
它与java中的泛型有关。如果我提到ArrayList<String>
这意味着我只能将String类型对象添加到该ArrayList。
Java中泛型的两个主要好处是:
https://stackoverflow.com/questions/-100005055
复制相似问题