Java Collections checkedQueue()
checkedQueue()是Java Collections 类的一种方法,该方法返回指定Queue的动态类型安全视图。如果插入的元素类型错误,将立即导致ClassCastException。
语法
以下是
checkedQueue()方法的声明:
public static <E> Queue<E> checkedQueue(Queue<E> queue, Class<E> type)
参数
参数 |
说明 |
必需/可选 |
queue |
这是要为其返回动态类型安全视图的队列。 |
必需 |
type |
这是允许Queue保留的元素类型。 |
必需 |
返回
checkedQueue()方法返回指定队列的动态类型安全视图。
异常
ClassCastException
兼容版本
Java 1.8及更高版本
示例1
import java.util.*;
public class CollectionsCheckedQueueExample1 {
public static void main(String[] args) {
//Create list
Queue<String> queue = new PriorityQueue<String>();
queue.add("A");
queue.add("B");
queue.add("C");
queue.add("D");
//Create type safe view of the List
System.out.println("Type safe view of the Queue is: "+Collections.checkedQueue(queue,String.class));
}
}
输出:
Type safe view of the Queue is: [A, B, C, D]
示例2
import java.util.*;
public class CollectionsCheckedQueueExample2 {
public static void main(String[] args) {
//Create list
Queue<Integer> queue = new PriorityQueue<Integer>();
queue.add(55);
queue.add(66);
queue.add(77);
queue.add(77);
queue.add(88);
queue.add(66);
//Create type safe view of the List
System.out.println("Type safe view of the Queue is: "+Collections.checkedQueue(queue,Integer.class));
}
}
输出:
Type safe view of the Queue is: [55, 66, 66, 77, 88, 77]
示例3
import java.util.*;
public class CollectionsCheckedQueueExample3 {
public static void main(String[] args) {
Queue<Integer> queue = new PriorityQueue<>();
queue = Collections.checkedQueue(queue, Integer.class);
queue.offer(1);
queue.offer(2);
queue.offer(5);
System.out.println("\n"+queue);
Queue queue2 = queue;
queue2.offer("Four");
System.out.println(queue2);
}
}
输出:
[1, 2, 5]
Exception in thread "main" java.lang.ClassCastException: Attempt to insert class java.lang.String element into collection with element type class java.lang.Integer
at java.base/java.util.Collections$CheckedCollection.typeCheck(Collections.java:3038)
at java.base/java.util.Collections$CheckedQueue.offer(Collections.java:3188)
at myPackage.CollectionCheckedQueueExample3.main(CollectionCheckedQueueExample3.java:12)