Java中的泛型

首先,我们先来了解一下什么是泛型。

一般的类和方法,只能使用具体的类型: 要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。

class MyArray<T> {
   public T[] array;
   public MyArray() {
   } 
   /**
   * 通过反射创建,指定类型的数组
   * @param clazz
   * @param capacity
   */
   public MyArray(Class<T> clazz, int capacity) {
      array = (T[])Array.newInstance(clazz, capacity);
   }
   public T getPos(int pos) {
      return this.array[pos];
   }
   public void setVal(int pos,T val) {
      this.array[pos] = val;
   }
   public T[] getArray() {
      return array;
   }
}

public static void main(String[] args) {
   MyArray<Integer> myArray1 = new MyArray<>(Integer.class,10);
   Integer[] integers = myArray1.getArray();
}

一、认识泛型:

1 引出泛型

那么实现一个类,类中包含一个数组成员,使得数组中可以存放任何类型的数据,也可以根据成员方法返回数组中某个下标的值?

class MyArray {
    public Object[] array = new Object[10];//0
   
    public void setVal(int pos,Object val) {
        array[pos] = val;
    }
    
    public Object getPos(int pos) {
        return array[pos];
    }
}

public class TestDemo{
    public static void main1(String[] args) {
        MyArray myArray = new MyArray();
        myArray.setVal(0,19);
        myArray.setVal(1,"hello");
        String s = (String)myArray.getPos(1);
        System.out.println(s);
    }
}

我们发现:1. 此时任何类型数据都可以存放
2. 1号下标本身就是字符串,但是确编译报错。必须进行强制类型转换

虽然在这种情况下,当前数组任何数据都可以存放,但是,更多情况下,我们还是希望他只能够持有一种数据类型。而不是同时持有这么多类型。所以,泛型的主要目的:就是指定当前的容器,要持有什么类型的对象。让编译器去做检查。此时,就需要把类型,作为参数传递。需要什么类型,就传入什么类型。

2 语法:

class 泛型类名称<类型形参列表> {
// 这里可以使用类型参数
}
class ClassName<T1, T2, ..., Tn> {
}

class 泛型类名称<类型形参列表> extends 继承类/* 这里可以使用类型参数 */ {
// 这里可以使用类型参数
}
class ClassName<T1, T2, ..., 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值