image.png
    泛型类原理:把出现泛型变量的地方全部替换成传输的真实数据类型
    image.png
    image.png
    会把出现,泛型的地方全部定义为String (相当于定义的泛型之后,只能操作对应的引用类型)
    image.png
    这样只能操作整数
    image.png

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