关于java泛型的小问题

(1)附录1中的类是一个存储String类对象的栈,请将其改造为泛型类GenericStack,该类支持存储泛型类对象的元素。

package ch3;
import java.util.*;

public class StringStack {
private LinkedList<String> linkedList;

public StringStack() {
linkedList = new LinkedList<String>();
}
public void push(String name) {

//将元素加入串行前端
linkedList.addFirst(name);
}
public String top() {
//取得串行第一个元素
return linkedList.getFirst();
}
public String pop() {
//移出第一个元素
return linkedList.removeFirst();
}
public boolean isEmpty() {
//串行是否为空
return linkedList.isEmpty();
}
public static void main(String[] args) {
StringStack sstack=new StringStack();
sstack.push("first");
sstack.push("second");
sstack.push("third");

while(!sstack.isEmpty()){
System.out.println(sstack.pop());
}
}
}

class StringStack<T> {
private LinkedList<T> linkedList;

public StringStack() {
linkedList = new LinkedList<T>();
}
public void push(T name) {

//将元素加入串行前端
linkedList.addFirst(name);
}
public T top() {
//取得串行第一个元素
return linkedList.getFirst();
}
public T pop() {
//移出第一个元素
return linkedList.removeFirst();
}
public boolean isEmpty() {
//串行是否为空
return linkedList.isEmpty();
}
public static void main(String[] args) {
StringStack<String> sstack=new StringStack<String>();
sstack.push("first");
sstack.push("second");
sstack.push("third");

while(!sstack.isEmpty()){
System.out.println(sstack.pop());
}
}
}追问

您好,能不能简单的解释一下大概思路

追答

其实挺简单的,自带的StringStack本身就已经实现了存储String类型的元素列表的功能
那么剩下的就是不限制元素类型,把原本的类型限制String改为题目需要的泛型就可以了
T是java中的泛型关联字,可以在创建类的时候通过class的形式定义
所以原先不存在泛型的,第一行改为StringStack,让这个类引入泛型
之后下面的所有方法都可以使用T来指代上面的T,也就是将来创建时指定的类
使用方法的话,其实就是StringStack sstack=new StringStack();
将String作为泛型指定的类型传入
需要指定其他元素的存储类的话,创建时String改为其他类型就可以了

追问

好的谢谢!

温馨提示:答案为网友推荐,仅供参考
相似回答