zoukankan      html  css  js  c++  java
  • 8-6 泛型

    package generic;
    
    import java.util.ArrayList;
    import java.util.Collection;
    
    public class TestOne {
    
        @SuppressWarnings("unchecked")
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            
            //8.6约束和局限性
            //8.6.1不能用基本类型实例化类型参数
            //8.6.3 不能创建参数化类型的数组
            
    //        Pair<String> [] pair = new Pair<String>[2]; //error
    //         Pair<String>[]  pair =null; //合法的
             Pair<String>[]  pair = (Pair<String>[]) new Pair<?>[2];//声明通配型的数组进行转换,不安全
    pair[0]  = new Pair<String>();
    //pair[1]  = new Pair<Employee>();    
            
             //收集参数化类型对象 ArrayList 比较好
    //         ArrayList<Pair<String>> pair  = new ArrayList<Pair<String>>();
    
    
            //8.6.4  Varargs警告
            //向参数可变的方法传递一个可变的实例  泛型数组
            Collection<Pair<String>> collection = null;
            Pair<String> pair1 = null;
            Pair<String> pair2 = null;
    //        addAll(collection, pair1,pair2);
            
            // 一般用 @SuppressWarnings("unchecked")  javase 7 可用 @SafeVarargs
            
            
            Pair<String> [] pairArr = array(pair1,pair2);
            Object[] arr = pairArr;
            arr[0] = new Pair<Employee>();
    
        }
        //8.6.4 
        @SafeVarargs
        public static <T> void addAll(Collection<T> collection, T ... ts ){
            for(T  t : ts  ){
                collection.add(t);
            }
        }
        
        public static <E> E[] array(E ... array){
            return array;
        }
    
    }
  • 相关阅读:
    解析三种常见分布式锁的实现
    RabbitMQ基础概念详解
    数据库事务概念
    ECIF与CRM
    MQ(消息队列)学习
    数据粒度的设计
    链表之 头节点与尾指针 区别
    牛客之错题(2016.1.15) && 带头节点与不带头的区别
    数据结构之递归回溯算法
    LeetCode--Single Number
  • 原文地址:https://www.cnblogs.com/lxh520/p/8421886.html
Copyright © 2011-2022 走看看