J2EE社区

苟有恒,何必三更起五更眠;
最无益,只怕一日曝十日寒.
posts - 241, comments - 318, trackbacks - 0, articles - 16

六、java1.5以上新特性-范型

Posted on 2011-06-05 16:51 xcp 阅读(297) 评论(0)  编辑  收藏 所属分类: review
1。由来
    ByteFoo->private Byte foo;
    StringFoo->private String foo;
    BooleanFoo->private boolean foo;
    DateFoo->private Date foo;
    XcpFoo->private xcp foo;

2。1.4以前的解决方案
    ObjectFoo->private Object foo;  //容易出现ClassCastException,类型转换错误

3。1.5新特性的解决方案-范型
    public Class MyFoo<T>{
        private T foo;
    }

4。扩展
    public Class MyFoo<T>{
        private T[] foos; //等等
    }

5.再度扩展-限制范型使用类型
    public Class MyFoo<T extends List>{ //不管是继承父类与实现接口都用extends
        private T foo;
    }


6.再度扩展-类型通配声明-->使用时的通用方法
     public Class MyFoo<T extends List>{
        private T foo;
        public static void main(String args[]){
            MyFoo<ArrayList> foo1 = new MyFoo<ArrayList>();
            MyFoo<LinkedList> foo2 = new MyFoo<LinkedList>();
            
            //现在我想声明一个变量,即可以放ArrayList,也可以放LinkedList
            MyFoo<? extends List> foo3 =null;  //list的子类
            foo3 = new MyFoo<ArrayList>();
            foo3 = new MyFoo<LinkedList();

            
            MyFoo<? super List> foo4 =null; //list的父类
            foo4 = new MyFoo<Object>();   //这就只能为Object了,因为List的超父类有Object
        
            MyFoo<?>  foo5 = null;    //任意类型== ? extends Object
            foo5 = new MyFoo<Integer>();
            foo5 = new MyFoo<String>();
      }
    }
    



名称: ♪4C.ESL | .↗Evon
口号: 遇到新问题♪先要寻找一个方案乄而不是创造一个方案こ
mail: 联系我