I am currently studying Java and have recently been stumped by angle brackets(<>). What exactly do they mean?
public class Pool{
public inter
is a generic and can usually be read as "of type T". It depends on the type to the left of the <> what it actually means.
I don't know what a Pool
or PoolFactory
is, but you also mention ArrayList
, which is a standard Java class, so I'll talk to that.
Usually, you won't see "T" in there, you'll see another type. So if you see ArrayList
for example, that means "An ArrayList
of Integer
s." Many classes use generics to constrain the type of the elements in a container, for example. Another example is HashMap
, which means "a map with String
keys and Integer
values."
Your Pool example is a bit different, because there you are defining a class. So in that case, you are creating a class that somebody else could instantiate with a particular type in place of T. For example, I could create an object of type Pool
using your class definition. That would mean two things:
Pool
would have an interface PoolFactory
with a createObject
method that returns String
s.Pool
would contain an ArrayList
of Strings.This is great news, because at another time, I could come along and create a Pool
which would use the same code, but have Integer
wherever you see T
in the source.