可以定义一个带有类型参数的简单方法:

    1. class ArrayAlg {
    2. public static <T> T getMiddle(T...a) {
    3. return a[a.length / 2];
    4. }
    5. }

    泛型方法可以定义在普通类中,也可以定义在泛型类中。可以看到泛型方法一定要有类型参数,例如:<T>

    当调用一个泛型方法时,在方法名前的尖括号中放入具体的类型:

    1. String middle = ArrayAlg.<String>getMiddle("John", "Q.", "Public");

    在这种情况(实际也是大多数情况)下,方法调用中可以省略 类型参数。编译器有足够的信息能够推断出所调用的方法。它用 names 的类型(即 String[])与泛型类型 T[] 进行匹配并推断出 T 一定是 String:

    1. String middle = ArrayAlg.getMiddle("John", "Q.", "Public");

    几乎在大多数情况下,对于泛型方法的类型引用没有问题。偶尔,编译器也会提示错误:

    1. double middle = ArrayAlg.getMiddle(3.14, 1729, 0);