泛型的的使用和我们常见的泛型

泛型的好处和定义

  1. ArrayLIst<> arr=new ArrayList<>();就是一种泛型;
  2. 泛型的好处:泛型就是为了告诉编译器我需要存什么数据;例如:ArrayList中可以有Integer String Long等等

泛型用在类 方法和接口中

1.定义泛型类

public class MyArrayList<E> {
    public void add(E e){

    }
    public E get(){
        return null;
    }
}

2.定义泛型方法

public class FanXing<E> {
   public void fun(E e,E e1,E e2,E e3){//方法中可以定义多个泛型
       System.out.println("泛型1"+e);
       System.out.println("泛型2"+e1);
       System.out.println("泛型3"+e2);
       System.out.println("泛型4"+e3);

   }

3.定义泛型接口

public Interface Animal<E>{//只能传递E类型的数据
        public void fun(E e){
        }
}

泛型的通配符

//1. <?> : 表示可以是任何类型的泛型
public class Test {
    public static void main(String[] args) {
        ArrayList<String> arr=new ArrayList<>();
        ArrayList<Integer> arr1=new ArrayList<>();
        arr.add("ads");
        arr1.add(123);
       fun(arr);
       fun(arr1);
    }
    //<?>可以表示任何类型
    private static void fun(ArrayList<?> arr) {
        System.out.println(arr);
    }
}
//2. <? extends E> : 可以是E级以下的任何子类
//创建一个Student类和Teacher类和person类
//Student类继承person类
//Teacher继承person类
public class Test {
    public static void main(String[] args) {
        ArrayList<Student> arr=new ArrayList<>();
        ArrayList<Teacher> arr1=new ArrayList<>();
        ArrayList<Persion> per=new ArrayList<>();
        fun(arr);//调用fun方法可以用Persion以下的所有子类类型
        //fun(per);错误,此类为父类,

    }
    //<?>可以表示任何类型
    private static void fun(ArrayList<?extends Persion> arr) {

    }
}

    //2.定义一个方法,可以接收"具有Student或者Teacher泛型的集合"
    public static void print2(ArrayList<? extends Person> list){

    }
}




//3. <? super E> : 可以使E级以上的任何父类
public class Test {
    public static void main(String[] args) {
        ArrayList<Student> arr=new ArrayList<>();
        ArrayList<Teacher> arr1=new ArrayList<>();
        ArrayList<Persion> per=new ArrayList<>();
        fun(per);//正确,此类为父类,条件是:父类以上的任意类
//        fun(arr);//错误该类为persion的子类
//        fun(arr1);//错误该类为persion的子类

    }
    //<?>可以表示任何类型
    private static void fun(ArrayList<?super Persion> arr) {

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值