Java教程

Java Collections checkedCollection()

checkedCollection()是Java集合类的一种方法,该方法返回指定集合的​​动态类型安全视图。如果插入的元素类型错误,将立即导致ClassCastException。

语法

以下是 checkedCollection()方法的声明:
public static <E> Collection<E> checkedCollection(Collection<E> c, Class<E> type)

参数

参数 说明 必需/可选
c 这是要为其返回动态类型安全视图的集合。 必需
type 这是允许c保留的元素的类型。 必需

返回

checkedCollection()方法返回指定集合的​​动态类型安全视图。

异常

ClassCastException

兼容版本

Java 1.5及更高版本

示例1

import java.util.*;
public class CollectionsCheckedCollectionExample1 {
    public static void main(String[] args) {
        //Create list       
          ArrayList<String> arrlist = new ArrayList<String>();
          arrlist.add("A");
          arrlist.add("B");
          arrlist.add("C");
          arrlist.add("D");
          //Create type safe view of the collection
          Collection<String> tslist;
          tslist = Collections.checkedCollection(arrlist,String.class);     
          System.out.println("Type safe view is: "+tslist);
          }
}
输出:
Type safe view is: [A, B, C, D]

示例2

import java.util.*;
public class CollectionsCheckedCollectionExample2 {
    public static void main(String[] args) {
        //Create list       
          ArrayList<Integer> arrlist = new ArrayList<Integer>();
          arrlist.add(10);
          arrlist.add(20);
          arrlist.add(30);
          arrlist.add(40);
          //Create type safe view of the collection
          Collection<Integer> tsafelist;
          tsafelist = Collections.checkedCollection(arrlist,Integer.class);     
          System.out.println("Type safe view is: "+tsafelist);
          }
}
输出:
Type safe view is: [10, 20, 30, 40]

示例3

import java.util.*;
public class CollectionsCheckedCollectionExample3 {
    public static void main(String[] args) {
            Collection<String> c = new ArrayList<>();
            c = Collections.checkedCollection(c, String.class);
            Collections.addAll(c, "apple", "banana");
            System.out.println(c);
            @SuppressWarnings("rawtypes")
        Collection c2 = c;
            c2.add(1);//this throws exception
            System.out.println(c2);
        }
}
输出:
[apple, banana]
Exception in thread "main" java.lang.ClassCastException: Attempt to insert class java.lang.Integer element into collection with element type class java.lang.String
    at java.base/java.util.Collections$CheckedCollection.typeCheck(Collections.java:3038)
    at java.base/java.util.Collections$CheckedCollection.add(Collections.java:3081)
    at myPackage.CollectionCheckedCollectionExample3.main(CollectionCheckedCollectionExample3.java:12)

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4