泛型类原理:把出现泛型变量的地方全部替换成传输的真实数据类型
会把出现,泛型的地方全部定义为String (相当于定义的泛型之后,只能操作对应的引用类型)
这样只能操作整数
package com.itheima.d8_genercity_class;
public class Test {
public static void main(String[] args) {
// 需求:模拟ArrayList定义一个MyArrayList,关注泛型设计
MyArrayList<String> list = new MyArrayList<>();
// 把出现泛型变量的地方全部替换成传输的真实数据类型
list.add("Java");
list.add("Java");
list.add("Mysql");
list.remove("Mysql");
// 由于调用了ArrayList集合的方法,所以返回的是ArrayList的内容
System.out.println(list);
MyArrayList<Integer> list2 = new MyArrayList<>();
// 这个时候创建的MyArrayList只能传入整型对象
list2.add(23);
list2.add(24);
list2.add(25);
list2.remove(25);
System.out.println(list2);
}
}
package com.itheima.d8_genercity_class;
import java.util.ArrayList;
public class MyArrayList<E> { // 定义泛型类要加<E>
// 创建一个私有的ArrayList集合的对象,可以用他的方法
// 使用了private权限符修饰 这个对象只能在本类访问
private ArrayList lists = new ArrayList();
//
// 其实内部用的都是ArrayList的东西
public void add(E e){
// 这里相当于使用别人的方法,套娃
lists.add(e);
}
public void remove(E e){
lists.remove(e);
}
// 重写toString方法 这里调用ArrayList集合的方法(套在里面)变成自己的一样
@Override
public String toString() {
return lists.toString(); // 重写toString方法
// 返回ArrayList对象的toString方法(内容)
}
}