Using checkedQueue:

package com.logicbig.example.collections;
import java.util.Collections;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
public class CheckedQueueExample2 {
public static void main(String... args) {
Comparator comparator = (o1, o2) -> 1;
Queue<Integer> queue = new PriorityQueue<>(comparator);
queue = Collections.checkedQueue(queue, Integer.class);
queue.offer(1);
queue.offer(2);
System.out.println(queue);
Queue queue2 = queue;
queue2.offer("three");
System.out.println(queue2);
}
}
Output
[1, 2]
java.lang.ClassCastException: Attempt to insert class java.lang.String element into collection with element type class java.lang.Integer
at java.util.Collections$CheckedCollection.typeCheck (Collections.java:3455)
at java.util.Collections$CheckedQueue.offer (Collections.java:3615)
at com.logicbig.example.collections.CheckedQueueExample2.main (CheckedQueueExample2.java:25)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104)
at java.lang.reflect.Method.invoke (Method.java:565)
at org.codehaus.mojo.exec.AbstractExecJavaBase.executeMainMethod (AbstractExecJavaBase.java:402)
at org.codehaus.mojo.exec.ExecJavaMojo.executeMainMethod (ExecJavaMojo.java:142)
at org.codehaus.mojo.exec.AbstractExecJavaBase.doExecClassLoader (AbstractExecJavaBase.java:377)
at org.codehaus.mojo.exec.AbstractExecJavaBase.lambda$execute$0 (AbstractExecJavaBase.java:287)
at java.lang.Thread.run (Thread.java:1474)
JDK 25