In reply to raysalemi:
The documentation is misleading. What it does is return the existing value of an entry if it exists, and creates a new entry in the pool if it does not already exist, and returns the default initial value for the pool type.
uvm_pool is a carry-over from Specman, which did not have associative arrays. And one difference between SystemVerilog’s implementation of assoc array and a pool is that SV only creates an entry when you write to it, where as a pool you create a new entry when you write(add) or try to read(get) an entry.