Java Stack.peek() 对象
Java Stack.peek() to objects
我正在尝试使用堆栈将对象放入堆栈中。我有一个 Pixel class,它有一个简单的 getX 函数,returns 一个在构造函数中定义的变量。当我使用 stack.peek().getX();它说找不到 .getX() 的符号;
Stack stack = new Stack();
Pixel first = new Pixel(colorX,colorY);
stack.push(first);
int x = stack.peek().getX();
我是不是用错了peek功能?还是我的 Pixel class 设置不正确?
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;}
您使用 Stack stack = new Stack();
定义了堆栈,但是堆栈 class 的定义有一个参数类型 Stack。通过不声明类型,由于 Java 并不总是具有泛型,所以您基本上写了 Stack<?>
,因此编译器不知道返回值将具有哪些方法。
如何解决?将您的堆栈声明为 Stack<Pixel> stack = new Stack<>();
因为您使用的是原始 Stack
,而不是 Stack<Pixel>
,所以您会收到此错误。原始堆栈本质上等同于 Stack<Object>
,因此当您调用 peek()
时,它是 returns Object
而不是 Pixel
。
即使运行时类型可能是 Pixel
,方法解析发生在编译时并且 Object
没有 getX()
方法。
我正在尝试使用堆栈将对象放入堆栈中。我有一个 Pixel class,它有一个简单的 getX 函数,returns 一个在构造函数中定义的变量。当我使用 stack.peek().getX();它说找不到 .getX() 的符号;
Stack stack = new Stack();
Pixel first = new Pixel(colorX,colorY);
stack.push(first);
int x = stack.peek().getX();
我是不是用错了peek功能?还是我的 Pixel class 设置不正确?
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;}
您使用 Stack stack = new Stack();
定义了堆栈,但是堆栈 class 的定义有一个参数类型 Stack。通过不声明类型,由于 Java 并不总是具有泛型,所以您基本上写了 Stack<?>
,因此编译器不知道返回值将具有哪些方法。
如何解决?将您的堆栈声明为 Stack<Pixel> stack = new Stack<>();
因为您使用的是原始 Stack
,而不是 Stack<Pixel>
,所以您会收到此错误。原始堆栈本质上等同于 Stack<Object>
,因此当您调用 peek()
时,它是 returns Object
而不是 Pixel
。
即使运行时类型可能是 Pixel
,方法解析发生在编译时并且 Object
没有 getX()
方法。