泛型使用案例
时间: 2023-06-28 20:16:06 浏览: 44
泛型(Generics)是一种在编程语言中实现参数化类型的技术,可以让我们编写更加灵活和通用的代码。下面是一个泛型使用案例:
假设我们有一个需求,需要实现一个通用的栈(Stack)数据结构,可以存储任何类型的元素。我们可以使用泛型来实现这个通用的栈数据结构。以下是一个基于Java的示例代码:
```java
public class Stack<T> {
private ArrayList<T> items;
public Stack() {
items = new ArrayList<T>();
}
public void push(T item) {
items.add(item);
}
public T pop() {
if (items.isEmpty()) {
throw new RuntimeException("Stack is empty");
}
return items.remove(items.size() - 1);
}
public boolean isEmpty() {
return items.isEmpty();
}
}
```
在上面的代码中,我们使用了一个类型参数 `T`,它代表任何类型。我们在类的定义中使用了 `<T>` 来声明这个类是一个泛型类,它可以接受任何类型的元素。在类的内部,我们使用 `T` 来代表元素的类型。我们将元素存储在一个 `ArrayList<T>` 中,这个 `ArrayList` 可以存储任何类型的元素。
我们定义了三个方法:`push()`、`pop()` 和 `isEmpty()`。`push()` 方法用于将元素压入栈中,`pop()` 方法用于弹出栈顶元素,并从栈中移除它,`isEmpty()` 方法用于判断栈是否为空。
使用泛型,我们可以使用这个通用的栈数据结构来存储任何类型的元素,例如:
```java
Stack<Integer> intStack = new Stack<Integer>();
intStack.push(1);
intStack.push(2);
intStack.push(3);
intStack.pop(); // 返回 3
intStack.pop(); // 返回 2
Stack<String> strStack = new Stack<String>();
strStack.push("Hello");
strStack.push("World");
strStack.pop(); // 返回 "World"
```
在上面的示例代码中,我们分别使用了 `Stack<Integer>` 和 `Stack<String>` 来存储整数和字符串类型的元素。由于使用了泛型,这个通用的栈数据结构可以存储任何类型的元素。