java - 原始类型,泛型,应该被参数化

标签 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;
}

最佳答案

原始类型意味着堆栈(在本例中)将保存的数据类型是未指定的。

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

要删除警告,只需使用 Stack<Character> stack = new Stack<Character>(); 创建堆栈即可

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

关于java - 原始类型,泛型,应该被参数化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28822286/

相关文章:

haskell - 实例函数的类型推断

c++ - 无法理解类型别名和常量

ios - 约束后堆栈大小不正确

java - 将 spring boot actuator 健康端点更改为自定义端点

java - Crawler4j 警告 "invalid cookie header"导致爬网程序无法获取该页面

解析大型 xml 文件时发生 Java 堆空间错误

Java 泛型类定义为返回类型还是在类级别?

c - linux中进程是如何分配栈的

c# - 在构造函数中访问数组

java - 在 Socket 中处理多个客户端