泛型

一,泛型

泛型能解决的问题------代码复用,比如

//不适用泛型,两个类虽然代码结构即功能都相同,但是由于类型不一样,不能复用代码
class classA(){
   private String field;
   public void fun(String a){}; 
    
}

class classB(){
   private int field;
   public void fun(int i){}; 
    
}

//使用泛型,引入类型变量T,允许该类匹配多种类型
class classC<T>(){
   private T field;
   public void fun(T t){}; 
    
}

  其中,类型变量可以为T,K,V,其他字母也行,无所谓,约定俗成而已,E常用于集合框架里的元素

1,泛型类(泛型接口类似)

泛型类可以有一个或多个类型变量,总而言之,泛型类可以理解为普通类的工厂

public class  classA<T>{}

public class  classB<K,V>{}

2,泛型方法

类型变量放在修饰符(static等)后,返回类型前,可以定义再普通类或泛型类里

public class  classA<T>{
     private  T  field;   
     //返回值为String
     public  static <T>  String  fun(T t){}
     //返回值为泛型
      public  static <T>  T  fun2T t){}
           
}    

 限定泛型边界

 限定泛型边界,则只能限定在Number类型,新建String类型会报错  

public class Test01<T extends Number > {
    private T field;

    public T getField() {
        return field;
    }

    public void setField(T field) {
        this.field = field;
    }

    public static void main(String[] args) {
        Test01<Integer> test01=new Test01<>();
        test01.setField(10);
        System.out.println(test01.getField());//10

        //报错:类型参数没有继承Number
//        Test01<String> test02=new Test01<String>();
    }
}

  

二,通配符

当泛型中的类型变量T(或其他)实例为具体类型时,即为泛型赋值了,主要用在变量,即泛型赋值不确定,多用于方法传参的变量

public class Test02<T> {
    
    
    public void fun(Test02<?> test02){
        
    }

    

  

 

 

转载于:https://www.cnblogs.com/guochengfirst/p/9384021.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值