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)