首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

黑马软件工程师_<<泛型>>

2013-09-28 
黑马程序员_泛型--------------------ASP.NetAndroidIOS开发、.Net培训、期待与您交流! ---------------

黑马程序员_<<泛型>>

--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------


1.     泛型     1.概述

           泛型是为了解决了集合中存储对象安全问题,如果集合中存数了不同类型的对象,那么读取出来后,操作取出的对象以为不知道类型,会出现安全问题,但是这不会在编译时期提示错误,而是会在运行时期出现问题,所以泛型会把运行时期的错误移到了编译时期,那么错误就会避免。

     2.集合中的泛型

           在集合中都会存在泛型,下同时迭代器中也定义了泛型,在读取出来后,我们也要指定迭代器的类型,这样我们就不需要强制类型转换了,因为迭代器中就指定了类型,所以读取出来的对象类型也就是我们指定的类型。

 

package www.fuxi.jihe; import java.util.ArrayList;import java.util.Comparator;import java.util.Iterator;import java.util.TreeSet; class door {  privateString name;   publicdoor(String name) {       this.name= name;  }   publicString toString() {       returnthis.name;  }  publicString getName(){       returnthis.name;  }} class tieDoor extends door {// 继承了door类  publictieDoor(String name) {       super(name);  }} class MyCom implements Comparator<door>{  publicint compare(door o1, door o2) {       returno1.getName().compareTo(o2.getName());  }    }public class fanxingDemo {  publicstatic void main(String[] args) {       fanxingDemod = new fanxingDemo();       TreeSet<tieDoor>list = new TreeSet<tieDoor>(new MyCom());       list.add(newtieDoor("door-3"));       list.add(newtieDoor("door-1"));       list.add(newtieDoor("door-2"));       Iterator<tieDoor>it=list.iterator();       while(it.hasNext()){             System.out.println(it.next());       }  } }结果:door-1door-2door-3 


从结果可以看出,已经比较了,但是设置的比较器是父类型,但是TreeSet集合设置的door的子类型,也可以排序,就是可以是下限或者是下限的父类型

可以是tieDoor类型或者tieDoor的父类型,都可以进行比较

假如又有一个类继承了door类,那么此子类对象添加到在TreeSet中,也可以使用当前的比较器进行排序。


--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------


热点排行