原始类型,泛型,应参数化

时间:2015-03-03 00:59:43

标签: java types stack

所以我是堆栈的新手,我必须编写一个解决后缀表达式的程序。我觉得我的物流有点正确,但是我收到一条警告说我有一个原始类型,我的参考应该参数化。我不知道这意味着什么也不知道如何解决它。有任何想法吗?

    import java.util.Stack;

    public class Expression<T> {

    int result, num1, num2;
    Stack stack;
    char c;


    public <T> int evaluate(String expression)
    {
    stack = new Stack();

    for (int i = 0; i < expression.length(); ++i)
        c = expression.charAt(i);

    if (c > '0' && c < '9')
        stack.push(c);
    else
        num1 = Integer.parseInt("" + stack.pop());
        num2 = Integer.parseInt("" + stack.pop());

    switch (c)
    {
    case '+':
        stack.push(num1 + num2);
        break;
    case '-':
        stack.push(num1 - num2);
        break;
    case '*':
        stack.push(num1 * num2);
        break;
    case '/':
        stack.push(num1 / num2);
        break;
    }

    result = Integer.parseInt("" + stack.pop());

    return result;
}

}

1 个答案:

答案 0 :(得分:1)

原始类型意味着未指定堆栈(在此实例中)将保留的数据类型。

Java被认为是类型安全的,因此它的一个功能是确保接受和存储正确的类型。如果不指定类型,程序更容易出现运行时错误。

要删除警告,只需使用Stack<Character> stack = new Stack<Character>();

创建堆栈

(请注意,使用了包装类Character,而不是原始char。原因是通用数据结构只能保存原始类型不对的对象。)