在类定义处声明的泛型,则用来指定这个类用来处理的对象类型,这个类中定义的所有方法,只要使用了类定义处声明的泛型参数,则都必须使用同一个对象,否则,编译就会出现错误
如果仅仅是在方法声明处定义泛型,则表示这个方法的参数或返回值使用什么类型的数据。
泛型可以确保我们定义的类型是安全的,不会出现转换出错问题等。
1.不再需要强制转型;
2.编辑器增加了强制检查集合中的对象类型的功能,避免了在Girl的集合中出现Boy对象的问题(虽然有的时候是我们所期待的)
如:
public class Query{
private T t;
public T get(){...};
public void set(T t){...};
}
如果使用的方式如下:
Query query = new Query();
则上面定义的类与下面的定义一致
public class Query{
private User t;
public User get(){...}
public void set(User t){}
}
说白了,就是把以前只能运行时(Runtime)的类型检查,提到了编译(compile)时。
如果类型不匹配编译是不通过,这样把以前只能在运行程序时才能发现的错误现在编译时就能发现了,接合IDE直接就告诉你了。
在泛型中只能有一个类型,不能存放不是这个类型的其它元素。这样不就是类型安全。
编译的时候java编译器会给你做个检查,如果类型不一致,就会报错。
其实相当于在门口给你放个保安,如果你不带工卡,保安就要嚷嚷“哪来的野小子啊,敢在这里撒野!”
加了泛型之后你在这个集合当中就只能存放这个类型的元素了,这就是类型安全啊。