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中大多数的集合类和泛型类都是使用泛型来实现的。
