1.泛型:用来灵活地将数据类型应用到不同的类、方法、接口当中。将数据类型作为参数传递。 2.泛型的优点: 提高程序的安全性 将运行期问题转移到了编译期 省去了类型强转的麻烦 优化了程序设计 3.泛型的使用: 直接在指定泛型的地方给出明确的数据类型即可 在使用泛型后的集合中,迭代器返回时,可以直接返回该种数据类型对象。 替代了Object类的“任意化”性,避免了程序员必须预知使用时数据类型的情况。 <>里边什么都不写,叫菱形泛型,即前边是什么类型,后边也是什么类型。 4泛型的定义 (1)泛型类:在类上定义泛型,类中使用该类型 格式:class 类名<T>{使用T} (2)泛型方法:在方法上定义泛型,方法内使用泛型,与类无关。 格式:public <T>void method(){使用T} (3)泛型接口:在接口上使用泛型。 格式:interface 接口名<T>{} 在类实现接口时明确泛型类型 在类实现接口时仍不明确泛型类型,在创建对象时明确泛型类型 (4)泛型通配符:<?>可匹配任意一种数据类型 (5)<?>与<T>的差别 --通配符修饰的泛型不能直接使用而<T>可以使用 --通配符修饰相当于声明了一种变量,它可以作为参数在方法中传递,如collection的containsAll方法 --使用<?>可以完成类型限定,可参见TreeSet ?extends E 限定类型上限 ?super E 限定类型下限
|