【问题标题】:Implementing `Stack` from scratch从头开始实现`Stack`
【发布时间】:2015-07-26 19:39:10
【问题描述】:

我想从头开始实现Stack,但遇到了问题。我感觉我在为push方法写参数错误如:

public void push(<T> foo){
    myList.add(foo);
}

当我不确定foo 将是什么类型时,我还能如何编写参数?

package Stack;
import java.util.*;

public class Stack<T> {

    private List<T> myList;

    public Stack(){
        myList = null;
    }

    public boolean empty(){
        return (myList == null);
    }

    public void push(<T> foo){
        myList.add(foo);
    }
}

【问题讨论】:

  • public void push(T foo){ myList.add(foo);删除T 周围的尖括号。
  • “感觉我push方法的参数写错了”你为什么这么认为?您是否收到任何错误(除了明显的 NPE,因为 myListnull)?
  • @ChthonicProject,泛型中的括号是什么意思?
  • @John stackoverflow.com/questions/6607550/… 检查这个.. 可能有帮助!

标签: java


【解决方案1】:
public void push(T foo) {
    myList.add(foo);
}

您可以阅读有关泛型的更多信息here

【讨论】:

    【解决方案2】:

    正确的语法是:

    public void push(T foo) {
        myList.add(foo);
    }
    

    【讨论】:

      【解决方案3】:

      只是需要

      public void push(T foo){
          myList.add(foo);
      }
      

      【讨论】:

        【解决方案4】:

        将 foo 类型转换为 Object 类型

        public void push(Object foo){
            myList.add(foo);
        }
        

        【讨论】:

        • 糟糕的解决方案。他正在使用泛型。使 push take Object 只是禁用了他可以从通用解决方案中获得的类型安全。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-22
        • 2021-08-09
        • 2011-01-16
        相关资源
        最近更新 更多