泛型类:直接在类/接口上定义的泛型
使用泛型:
保证前后使用类型相同.
List<String> list = new ArrayList<String>();
//该List集合中只能存储String类型元素,因为前后类型相同,所以从Java7开始,推出泛型的棱形语法<>/
List<String> list = new ArrayList<>();
泛型不存在集成的关系(错误如下)
List<Object> list = new ArrayList<String>();//错误的写法
从此以后,使用集合都得使用泛型来约束该集合中元素的类型.
通过反编译发现:泛型其实也是语法糖,底层依然没有finger,而且依然使用强转
class Point<T>{
private T x;
private T y;
public T getX() {
return x;
}
public void setX(T x) {
this.x = x;
}
public T getY() {
return y;
}
public void setY(T y) {
this.y = y;
}
}
public class GenericType {
public static void main(String[] args) {
Person<Integer> p1 = new Person<>();
p1.setX(Integer.valueOf(100));
System.out.println(p1.getX());
}
}
泛型类的继承
继承到时候必须要指定泛型的类型
class Point<T>{
private T x;
private T y;
public T getX() {
return x;
}
public void setX(T x) {
this.x = x;
}
public T getY() {
return y;
}
public void setY(T y) {
this.y = y;
}
}
class XXX extends Point<Integer>{
private T x;
private T y;
public T getX() {
return x;
}
public void setX(T x) {
this.x = x;
}
public T getY() {
return y;
}
public void setY(T y) {
this.y = y;
}
}