繁体   English   中英

为什么将int作为Object传递?

[英]Why is int being passed as Object?

import java.util.ArrayList;

class Stack {
    private ArrayList stack;
    private int pos;

    Stack() {
        stack = new ArrayList();
        pos = -1;
    }
    int pop() {
        if(pos < 0) {
             System.out.println("Stack underflow.");
             return 0;
        }
        int out = stack.get(pos);
        stack.remove(pos);
        pos--;
        return out;
    }
}

我正在尝试编写一个基本的可变长度堆栈,这是我的代码的片段。 运行此命令时,出现错误:

Main.java:16: error: incompatible types
   int out = stack.get(pos);
                       ^
required: int
found:    Object

为什么将此作为对象传递?

目前,你是不是定义在举行泛型类型ArrayList称为stack所以你会得到一个原始Object从返回类型ArrayList.get

您需要更换

ArrayList stack;

ArrayList<Integer> stack;

同样

stack = new ArrayList();

stack = new ArrayList<Integer>(); // new ArrayList<>(); for Java 7

也看看使用java.util.Stack

stack没有被告知它拥有什么变量类型,所以它诉诸于通用Object

ArrayList stack;

应该

ArrayList<Integer> stack;

stack.get(int)方法返回一个对象。 这里的int只是索引。 如果要在索引int处获取堆栈的值,并且它返回Integer ,则需要执行以下操作:

Integer x = stack.get([int index position]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM