泛型概念理解
list
list类似数组的功能. 特点是可变长.
单纯的下面使用方法, 是没什么问题
ArrayList list = new ArrayList();
list.add(10);
list.add("m1");
System.out.println(list);//[10, m1]
for (Object o : list) {
System.out.println(o);
}
如果做一些转换操作, 可能出现转换错误
for (Object o : list) {
Integer i = (Integer)o;//java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
System.out.println(i);
}
普通变量定义引出泛型
容器里放值
String name;
name = "mao";//已规定了容器里
容器里套容器,放值. 需要约束值得类型 怎么办?
定义 容器>容器 的时候,就规定底层容器存的值得类型.
ArrayList<String> arr = new ArrayList<>();
这种说法就是泛型.
泛型即可广泛,不确定的类型. 说的是外层容器可以存多种内部类型. 使用来规定内部类型该用什么类型.
泛型继承
泛型继承
丢失,T为Object类型
interface AI<T>{
void show(T t);
}
class A implements AI {
@Override
public void show(Object o) {
}
public static void main(String[] args) {
}
}
写死
interface AI<T>{
void show(T t);
}
class A implements AI<String> {
@Override
public void show(String s) {
}
public static void main(String[] args) {
}
}
写活
interface AI<T>{
void show(T t);
}
class A<T> implements AI<T> {
@Override
public void show(T t) {
}
public static void main(String[] args) {
}
}