目 录
1.泛型机制
2.泛型的语法
3.泛型的注意事项
4.泛型好处: 可以把问题提前编译期,泛型有良好的扩展性并且可以避免向下转型.
5.泛型可以使用在 类,接口,方法上
6.泛型通配符
1.泛型机制
泛型机制是一种把数据类型明确工作,推迟到创建对象或调用方法时,才去明确的一种机制,也就是在创建对象或调用方法时才会知道是数据的数据类型是什么类型.并且泛型机制是JDK1.5版本之后才有的机制!
2.泛型的语法
3.泛型的注意事项
泛型只在编译期有效,在运行期泛型就擦除了.也就是泛型的作用只在编译期有效.
4.泛型好处: 可以把问题提前编译期,泛型有良好的扩展性并且可以避免向下转型.
一般来说,不会在容器中存储多种数据类型,只会在容器中存储同一种数据类型。使用了泛型的直观感受就是可以限定集合中存储的元素的数据类型,只能是泛型这种类型。
ArrayListlist2 = new ArrayList (); list2.add("abc"); list2.add("abc"); list2.add("hello"); list2.add("world"); //此时只能是String类型的数据放入到list2集合中
如果就是有一个要求想要在集合中存储多种引用数据类型并且还得把泛型写上的话!就得把泛型定为
ArrayList
5.泛型可以使用在 类,接口,方法上
泛型类: public class 类名<泛型类型1,…>
public class MyObject{ private X x; private Y name; private Date birthday; public X getX() { return x; } public void setX(X x) { this.x = x; } public Y getName() { return name; } public void setName(Y name) { this.name = name; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }
泛型接口: public interface 接口名<泛型类型>
public interface MyInterface{ public abstract void show(X x); }
当一个类,去实现一个接口时,可以在这里明确泛型接口上定义的那个泛型的具体数据类型
public class AA implements MyInterface{ @Override public void show(Integer integer) { } }
当一个类实现一个泛型接口时,还是不想急于去明确这个接口上的泛型的具体类型,那么这个类继续设计为泛型类
public class BBimplements MyInterface { @Override public void show(X x) { } }
泛型方法: public <泛型类型> 返回类型 方法名(泛型类型 变量名)
public class MyCalc {
public void show(P p) {
System.out.println(p);
}
}
6.泛型通配符>
泛型通配符是指任意类型,如果没有明确,那么就是Object以及任意的Java类了.它的任意程度要比Object的任意程度大!
如上图所示:Object泛型后面只能是
关于通配符后面可以跟的泛型类型有以下两种情况,不满足情况的一定会报错!
- ? extends E: 向下限定,后面只能写E类以及其子类
- ? super E: 向上限定,后面只能写E类及其父类
import java.util.ArrayList;
public class FanXingTest {
public static void main(String[] args) {
//向上限定 只能说 Animal本身或Animal的父类
ArrayList super Animal> objects4 = new ArrayList();
ArrayList super Animal> objects5 = new ArrayList
(小编也在努力学习更多哟!以后再慢慢分享的啦!)
希望对友友们有所帮助!!!!



