03_Java 泛型 泛型方法及示例

441 阅读1分钟

Java 泛型方法

泛型方法对其所在类没有要求。即泛型方法所在的类可以是泛型类,也可以不是泛型类。

Java泛型通用方法的规则:

  • 泛型方法声明只需要将泛型参数列于返回值之前。
  • 每个类型参数部分包含一个或多个类型参数,用逗号分隔。类型参数(也称为类型变量)是指定泛型类型名称的标识符。
  • 类型参数可用于声明返回类型,并作为传递给通用方法的参数类型的占位符,这些参数被称为实际类型参数。
  • 将一个泛型方法体声明为任何其他方法。注意,类型参数只能表示引用类型,而不是原始类型(如int,double和char)。
public class GenericMethods {

    public static void main(String[] args) {
        Integer[] intArray = {1,2,3,4,5};
        String[] strArray = {"a","b","c","d","e"};
        printArray(intArray);public class GenericMethods {

        public static void main(String[] args) {
          Integer[] intArray = {1,2,3,4,5};
          String[] strArray = {"a","b","c","d","e"};
          printArray(intArray);
          printArray(strArray);

          ArrayList<String> list = new ArrayList<>();
          list.add("xiaoMing");
          list.add("xiaoHong");
          list.add("xiaoGou");
          System.out.println(list);

          printGeneric("");
          printGeneric(1);
          printGeneric(1.0);
          printGeneric(2.0F);
          printGeneric('c');
          printGeneric(new GenericMethods());


        }

        //泛型方法
        public static <E> void printArray(E[] eArray){
          for (E e : eArray) {
            System.out.print(e);
          }
        }
        
        public static <T> void printGeneric(T t){
          System.out.println(t.getClass().getName());
        }
      }
        printArray(strArray);

        ArrayList<String> list = new ArrayList<>();
        list.add("xiaoMing");
        list.add("xiaoHong");
        list.add("xiaoGou");
        System.out.println(list);


    }

    //泛型方法
    public static <E> void printArray(E[] eArray){
        for (E e : eArray) {
            System.out.println(e);
        }
    }
}

尽管上面这个类和其内部的方法可以被同时参数化,但上面例子中只有泛型方法拥有类型参数。 这是由方法的返回值类型前面的类型参数列表指明的。

输出结果:

12345abcde[xiaoMing, xiaoHong, xiaoGou]
java.lang.String
java.lang.Integer
java.lang.Double
java.lang.Float
java.lang.Character
cn.ling.generic.GenericMethods