黑马JAVA P132 泛型深入、自定义泛型、泛型通配符、上下限

 

 

package com.itheima.d7_genericity;

import java.util.ArrayList;
import java.util.List;

/**
 * 目标:泛型的概念
 *
 * 什么是泛型?
 * 泛型就是一个标签:<数据类型>
 *泛型可以在编译阶段约束只能操作某种数据类型。
 *
 * 注意:JDK1.7开始之后后面的泛型申明可以省略不写
 * 小结:泛型就是一个标签。泛型可以在编译阶段约束只能操作某种数据类型。泛型只能支持引用数据类型。
 */
public class GenericityDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Java");
        list.add("Java2");
        //list.add(23);

        List<String> list1 = new ArrayList<>();
        list1.add("Java");
//        list1.add(23.3);
//        list1.add(false);
        list1.add("Spring");

//        for(Object o : list){
//            String ele = String o;
//            System.out.println(ele);
//        }

        for (String s : list1) {
            System.out.println(s);
        }

        System.out.println("----------");
        //存储任意类型的元素
        List<Object> list2 = new ArrayList<>();
        list2.add(23);
        list2.add(23.3);
        list2.add("Java");

        // List<Object> list3 = new ArrayList<>();
        List<Integer> list3 = new ArrayList<>();

    }
}

 

package com.itheima.d8_genericity_class;

import java.util.ArrayList;

public class MyArrayList <E>{
    private ArrayList lists = new ArrayList();


    public void add(E e){
        lists.add(e);
    }

    public void remove(E e){
        lists.remove(e);
    }

    @Override
    public String toString() {
        return lists.toString();
    }
}
package com.itheima.d8_genericity_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");

        MyArrayList<Integer> list2 = new MyArrayList<>();
        list2.add(23);
        list2.add(24);
        list2.add(26);
        list2.remove(23);

    }
}

 

package com.itheima.d9_genericity_method;

/**
 * 泛型方法的定义格式:
 *      修饰符<泛型变量> 返回值类型  方法名称(形参列表){
 *
 *      }
 *      注意:方法定义了是什么泛型变量,后面就只能用什么泛型变量。
 *      泛型类的核心思想:是把出现泛型变量的地方全部替换成传输的真实数据类型。
 *
 *      需求:给你任何一个类型的数组,都能返回它的内容。Arrays.toString(数组)的功能!
 *      小结:泛型方法可以让方法更灵活的接收数据,可以做通用技术!
 */

public class GenericDemo {
    public static void main(String[] args) {
        String[] names = {"小璐","蓉蓉","小何"};
        printArray(names);

        Integer[] ages = {10, 20, 30};
        printArray(ages);

        Integer[] age2 = getArr(ages);
        String[] names2 = getArr(names);
    }

    public static <T> T[] getArr(T[] arr) {
        return arr;
    }

    public static <T> void printArray(T[] arr){
        if(arr != null){
            StringBuilder sb = new StringBuilder("[");
            for (int i = 0; i < arr.length; i++) {
                sb.append(arr[i]).append(i == arr.length - 1 ? "" : ",");
            }
            sb.append("]");
            System.out.println(sb);
        }else{
            System.out.println(arr);
        }
    }
}

 

 

package com.itheima.d10_genericity_interface;

public interface Data <E>{
    void add(E e);
    void delete(int id);
    void update(E e);
    E queryById(int id);
}
package com.itheima.d10_genericity_interface;

public class StudentData implements Data<Student>{
    @Override
    public void add(Student student) {

    }

    @Override
    public void delete(int id) {

    }

    @Override
    public void update(Student student) {

    }

    @Override
    public Student queryById(int id) {
        return null;
    }
}
package com.itheima.d10_genericity_interface;

public class TeacherData implements Data<Teacher>{
    @Override
    public void add(Teacher teacher) {

    }

    @Override
    public void delete(int id) {

    }

    @Override
    public void update(Teacher teacher) {

    }

    @Override
    public Teacher queryById(int id) {
        return null;
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值