Java泛型入门

使用Java泛型,我们可以写一个泛型方法来对一个对象数组排序,然后,调用该泛型来对整形数组、浮点数数组、字符串数组等进行排序。


1. 泛型方法

下面是定义泛型方法的规则:

所有泛型方法什么都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前。


下面是一个泛型方法的实例:

public class GenericMethodTest
{
   // 泛型方法 printArray                         
   public static < E > void printArray( E[] inputArray )
   {
      // 输出数组元素            
         for ( E element : inputArray ){        
            System.out.printf( "%s ", element );
         }
         System.out.println();
    }

    public static void main( String args[] )
    {
        // 创建不同类型数组: Integer, Double 和 Character
        Integer[] intArray = { 1, 2, 3, 4, 5 };
        Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
        Character[] charArray = { 'H', 'E', 'L', 'L', 'O' };

        System.out.println( "Array integerArray contains:" );
        printArray( intArray  ); // 传递一个整型数组

        System.out.println( "\nArray doubleArray contains:" );
        printArray( doubleArray ); // 传递一个双精度型数组

        System.out.println( "\nArray characterArray contains:" );
        printArray( charArray ); // 传递一个字符型型数组
    } 
}


交换数组中的两个元素的位置的泛型方法定义如下:

public static <T> void swap(T[] array, int i, int j) {
        T temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }


  • 用于放置泛型的类型参数的尖括号<T>应出现在方法的其它所有修饰符之后和在方法的的返回类型之前,按照惯例,通常使用某单个大写字母表示。
  • 注意类型参数只能代表引用型类型,不能是原始类型。swap(new int[3, 5], 0, 1); 语句是会编译报错的。
  • 普通方法、构造方法、静态方法都可以使用泛型。
  • 在泛型中可以同时使用多个类型参数,在定义时用尖括号分开,例如:

private static <K, V> void sayHello(K k, V v) {

    }


2. 泛型中的 ? 通配符

    public static void trans1(Collection<?> collection) {
        return;
    }

    public static void trans2(Collection<? extends Number> collection) {
        return;
    }


3. 泛型类

public class Box<T> {
 
  private T t;
 
  public void add(T t) {
    this.t = t;
  }
 
  public T get() {
    return t;
  }
  
}

注意:

在对泛型类进行参数化时,类型参数的实例必须是引用类型,不能使基本类型。

当一个变量被声明为泛型时,只能被实例变量和方法调用,而不能被静态变量和静态方法调用。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值