Java Collections checkedCollection()

checkedCollection() 返回指定集合的动态类型安全视图。如果插入的元素类型错误,将抛出ClassCastException异常。

1 语法

public static <E> Collection<E> checkedCollection(Collection<E> c, Class<E> type)  

2 参数

c:要为其返回动态类型安全视图的集合。

type:元素类型。

3 返回值

返回指定集合的动态类型安全视图。

4 Collections checkedCollection()示例1

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * Java Collections.checkedCollection的例子
 */
import java.util.*;

public class Demo {

    public static void main(String[] args) {
        //创建List
        ArrayList<String> arrlist = new ArrayList<String>();
        arrlist.add("A");
        arrlist.add("B");
        arrlist.add("C");
        arrlist.add("D");
        //创建集合的类型安全视图
        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]

5 Collections checkedCollection()示例2

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * Java Collections.checkedCollection的例子
 */
import java.util.*;

public class Demo {

    public static void main(String[] args) {
        //创建List
        ArrayList<Integer> arrlist = new ArrayList<Integer>();
        arrlist.add(10);
        arrlist.add(20);
        arrlist.add(30);
        arrlist.add(40);
        //创建集合的类型安全视图
        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]

6 Collections checkedCollection()示例3

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * Java Collections.checkedCollection的例子
 */
import java.util.*;

public class Demo {

    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);//这行代码会抛出异常
        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.util.Collections$CheckedCollection.typeCheck(Collections.java:3037)
	at java.util.Collections$CheckedCollection.add(Collections.java:3080)
	at com.yiidian.Demo.main(Demo.java:20)

 

热门文章

优秀文章