【问题标题】:Java Stack.peek() to objects [duplicate]Java Stack.peek()到对象[重复]
【发布时间】:2018-10-02 05:09:36
【问题描述】:

我正在尝试使用堆栈将对象放入堆栈中。我有一个 Pixel 类,它有一个简单的 getX 函数,它返回构造函数中定义的变量。当我使用 stack.peek().getX();它说它找不到 .getX() 的符号;

Stack stack = new Stack();
Pixel first = new Pixel(colorX,colorY);

stack.push(first);

int x = stack.peek().getX();

我是否使用了 peek 功能错误?还是我的 Pixel 类设置不正确?

public class Pixel {
private int x, y , count = 0;

Pixel(int x_in, int y_in)
{
    x = x_in; 
    y = y_in;
}

public int getX(){return x;}
public int getY(){return y;}

【问题讨论】:

    标签: java class stack peek


    【解决方案1】:

    因为您使用的是原始Stack,而不是Stack<Pixel>,您会收到此错误。原始堆栈本质上等同于Stack<Object>,因此当您调用peek() 时,它返回Object 而不是Pixel

    尽管运行时类型可能是Pixel,但方法解析发生在编译时,Object 没有getX() 方法。

    【讨论】:

      【解决方案2】:

      您使用Stack stack = new Stack(); 定义了堆栈,但堆栈类的定义具有参数类型堆栈。通过不声明类型,这可能是由于 Java 并不总是具有泛型,您基本上写了Stack<?>,因此编译器不知道返回值将具有哪些方法。

      如何解决?将你的堆栈声明为Stack<Pixel> stack = new Stack<>();

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-07
        • 2016-05-08
        • 1970-01-01
        • 2018-01-12
        • 2021-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多