Java基础学习笔记之泛型
简介
Java 泛型 (generics) 是 JDK 1.5 版本引入的一种数据类型,能够让程序员在编写代码时指定一些类型约束,可以更加简洁安全地使用泛型类型,提高代码的可读性和可维护性。
泛型的作用
泛型可以帮助程序员定义更加通用的代码模板,可以用来限定集合类的元素类型,避免运行时类型转换,提高程序的稳定性和效率。
泛型还可以用在各种类、接口的定义中,类似于模板,可以根据使用者的不同需要实现不同的类型转换。
声明泛型
泛型可在以下三种中进行声明:
class ClassName<T> { }
interface InterfaceName<T> { }
class ClassName {
<T> void methodName(T t) { }
}
<T>
是类型参数,可根据需要指定为其他大写字母。
使用泛型
定义泛型类
定义泛型类时需要用到类型参数,类型参数T用于定义集合类的元素类型,如下例:
public class MyList<T> {
private List<T> list = new ArrayList<>();
public void add(T t) {
list.add(t);
}
public T get(int index) {
return list.get(index);
}
}
泛型类 MyList 可以定义任何类型的列表,如整数列表、字符串列表、对象列表等,使用例子如下:
MyList<Integer> intList = new MyList<Integer>();
for(int i=0; i<10; i++) {
intList.add(i);
}
int e = intList.get(0);
使用通配符
通配符可以用来指定泛型类的元素类型,方式为使用?
代替 T 即可:
public void printList(List<?> list) {
for(Object elem : list) {
System.out.print(elem + " ");
}
}
List<?>
表示任何类型的列表,调用方式为:
List<Integer> intList = Arrays.asList(1, 2, 3);
printList(intList);
泛型接口
泛型接口同样可以定义泛型类,只需要在接口名后添加类型参数即可:
public interface Converter<T> {
void convert(T t);
}
使用时需要指定参数类型:
Converter<String> converter = new Converter<String>() {
@Override
public void convert(String s) {
System.out.println(s);
}
};
converter.convert("Hello, World!");
泛型方法
泛型方法也可以定义泛型,定义方式为:
public class MyMath {
public static <T extends Number> double add(T x, T y) {
return x.doubleValue() + y.doubleValue();
}
}
使用时需要指定参数类型:
double result = MyMath.add(1, 2.5);
示例说明
示例1:使用泛型实现不同类型的列表存储
public class MyList<T> {
private List<T> list = new ArrayList<>();
public void add(T t) {
list.add(t);
}
public T get(int index) {
return list.get(index);
}
public void printList() {
for(T elem : list) {
System.out.print(elem + " ");
}
}
}
使用示例:
MyList<String> strList = new MyList<String>();
MyList<Integer> intList = new MyList<Integer>();
MyList<Double> dblList = new MyList<Double>();
strList.add("Hello");
intList.add(123);
dblList.add(1.23);
strList.printList();
intList.printList();
dblList.printList();
输出结果:
Hello
123
1.23
示例2:使用通配符实现不同类型的列表输出
public void printList(List<?> list) {
for(Object elem : list) {
System.out.print(elem + " ");
}
}
使用示例:
List<Integer> intList = Arrays.asList(1, 2, 3);
List<String> strList = Arrays.asList("Hello", "World");
List<Double> dblList = Arrays.asList(1.23, 4.56, 7.89);
printList(intList);
System.out.println();
printList(strList);
System.out.println();
printList(dblList);
输出结果:
1 2 3
Hello World
1.23 4.56 7.89
总结
泛型让程序员更加方便、更加安全、更加简洁地编写代码,使得代码具有更好的可读性和可维护性。通过本文的介绍,我们学习了泛型的用法以及它在代码中的应用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java基础学习笔记之泛型 - Python技术站