欢迎访问宙启技术站
智能推送

Java中如何使用泛型函数?

发布时间:2023-06-20 05:37:59

Java是一种强类型语言,因此在声明变量和方法时,需要为其指定类型。泛型是一种可以将类型参数化的机制,可以在编译时检查类型,在运行时避免类转换异常,提高程序的类型安全性和可读性。

Java中使用泛型函数的语法格式如下:

public <T> void functionName(T parameter){
    // function body
}

其中,<T>表示声明泛型,T是泛型参数,可以根据需求指定为任何标识符,例如:

public <E> E functionName(E parameter){
    // function body
}

泛型函数支持的方法有以下几种:

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( "整型数组元素为:" );
      printArray( intArray  ); // 传递一个整型数组

      System.out.println( "
双精度型数组元素为:" );
      printArray( doubleArray ); // 传递一个双精度型数组

      System.out.println( "
字符型数组元素为:" );
      printArray( charArray ); // 传递一个字符型数组
   }
}

2. 泛型类和泛型方法的比较:

class GenericsType<T>{
   private T t;

   public void setter(T t){
      this.t = t;
   }

   public T getter(){
      return this.t;
   }

   public <E> void printArray(E[] elements){
        for ( E element : elements){
            System.out.println(element );
        }
    }
}

public class GenericsTest {
   public static void main(String args[]){
      GenericsType<String> type = new GenericsType<String>();
      type.setter("hello"); // 设置字符串
      System.out.println(type.getter()); // 获取字符串

      GenericsType<Integer> type2 = new GenericsType<Integer>();
      type2.setter(100); // 设置整型
      System.out.println(type2.getter()); // 获取整型

      //泛型方法演示
      GenericsType<String> gs = new GenericsType<String>();
      Integer[] intArray = { 10, 20, 30, 40, 50 };
      String[] strArray = { "Java", "JSP", "Servlet", "RMI" };
      Float[] floatArray = { 10.0f, 20.0f, 30.0f, 40.0f, 50.0f };

      gs.printArray(intArray);
      gs.printArray(strArray);
      gs.printArray(floatArray);
   }
}

3. 使用通配符:<?>

import java.util.*;

public class GenericTest {
   public static void main(String args[]) {
      // 使用 List 接口来创建集合对象
      List<String> list = new ArrayList<String>();
      list.add("菜");
      list.add("鸟");
      list.add("教");
      list.add("程");
      
      // 使用 Iterator 遍历集合
      Iterator<?> it = list.iterator();
      while(it.hasNext()){
         System.out.println(it.next());
      }
   }
}

总之,泛型函数可以使用在各种方法中,可以用来指定函数的参数类型和返回值类型,同时可以提高代码的可读性和复用性,Java中大多数的集合类和泛型类都是使用泛型来实现的。