In your code you have managed to centralize the resource declration/injection, but at your usage site you still need to address each queue individually. So not much has been gained compared with direct injection.
It seems that you are trying to have something like an array of queues together with resource injection, but resource injection in that case does not really scale: Each new queue requires a deployment.
In your case I suggest using a manual JNDI lookup in an iteration. Then you can put the queues in an array/list for further processing. You could even pass the number of queues as a parameter into the method, and so the number of queues can be changed dynamically at run-time:
Pseudo-code (not tested, just for illustration):
InitialContext ic = new InitialContext();
Queue[] qs = new Queue[count];
for (int i = 0; i < count; i++) {
String name = "queue/queuename" + i;
qs[i] = (Queue) ic.lookup(name);
}
If the queue name is based on a run-time argument (like an incoming JMS message) a JNDI lookup would be suitable, because static resource injection and dynamic naming conflicts somehow. Using a dynamic JNDI lookup scales, as a deployment to support additional queues is not required.