You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中Stack.peek()获取对象调用getX()报错:无法找到符号

问题分析与解决方案

这问题其实是原始类型集合的类型擦除导致的,跟peek()方法本身没啥关系,咱们一步步拆解清楚:

1. 核心原因:未使用泛型的Stack导致类型丢失

你现在声明的是原始类型的Stack:

Stack stack = new Stack();

这种情况下,栈里所有元素都会被编译器当作Object类型处理。peek()方法返回的是Object实例,而Object类根本没有getX()方法,所以编译器会直接报错“找不到符号”。

解决办法:用泛型指定栈的元素类型,把声明改成:

Stack<Pixel> stack = new Stack<>(); // Java 7及以上支持菱形语法

这样peek()就会直接返回Pixel类型,调用getX()就完全没问题了。

2. 次要检查点:确认Pixel类的getX()方法正确实现

你给出的Pixel类片段里只定义了私有成员变量x,但没看到getX()的具体实现。如果这个方法没写、方法名拼错(比如写成getx())或者访问权限不对(比如用了private修饰),也会导致相同的报错。

正确的getX()方法应该是这样的:

public class Pixel {
    private int x, y, count = 0;
    
    // 别忘了你的构造方法
    public Pixel(int x, int y) {
        this.x = x;
        this.y = y;
    }
    
    // 正确的getX实现
    public int getX() {
        return this.x;
    }
}

总结

先把Stack改成泛型版本,再确认Pixel类的getX()方法正确实现,这两个步骤就能解决你遇到的问题啦。

内容的提问来源于stack exchange,提问作者Drew Fowler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:41:40