Regarding UVM_QUEUE and their methods

Hi Dave, I have doubts about uvm_queue where I’m not making a queue using the new (), even though I’m able to use it globally but don’t know how is that possible?

class example;
  uvm_queue#(int unsigned) queue_1;
  example_seq_items seq_items_h;
  function new();
    super.new(name);
    //queue_1 = new(); // i am not using this one then also i do able to get queue items globally 
  endfunction 

  task insider();
     repeat(`no_of_transfer) begin
          seq_items_h = example_seq_items::type_id::create("seq_items_h");
         start_item(seq_items_h);
         //using queue to store the randomized values
         queue_1 = uvm_queue#(int unsigned)::get_global_queue();
         queue_1.push_back(seq_items_h.item);
         finish_item(seq_items_h);
      end
  endtask 
endclass

You used the static method get_global_queue() which constructs and returns a singleton object, the global queue. Look at the source code for uvm_queue.