所以我有一个被称为“家具”的课程。我正在制作我制作的每种家具的堆叠,并将堆叠存储在一个阵列中。
class Furniture{
private String color;
private String style;
private String height;
private String width;
private String depth;
public Furniture(String c)
{
color = c;
}
public Furniture(String s, String c)
{
color = c;
style = s;
}
public Furniture(String h, String w, String d, String c)
{
height = h;
width = w;
depth = d;
color = c;
}
public Furniture(String s, String h, String c)
{
style = s;
height = h;
color = c;
}
public String getColor()
{
return color;
}
}
课程已扩展
class Bed extends Furniture
{
private String size;
public Bed(String sz,String c){
super(c);
size = sz;
}
}
然后我尝试调用我的getColor()方法
Stack s = new Stack();
s.push(new Bed("queen","red"));
System.out.println(s.peek().getColor());
java:195: error: cannot find symbol
System.out.println(s.peek().getColor());
symbol: method getColor()
location: class Object
我不确定如何解决这个问题
答案 0 :(得分:2)
错误是因为,当您 peek()堆叠顶部元素时,它会返回对象类对象,该对象不包含 getColor()方法。因此,您只需要使用通用参数 Bed
创建堆栈你必须改变
Stack s = new Stack();
到
Stack<Bed> s = new Stack<Bed>();
现在,当您查看堆叠顶部元素时,它将返回 Bed 对象而不是对象对象。所以 getColor()可以解决。
答案 1 :(得分:1)
您的堆栈没有模板,因此它将默认保存对象。因此,使用peek()
返回的对象被视为类Object而不是类Bed。正如您所看到的,Java无法在Object中找到getColor()
方法,因为没有。
以下是解决问题的方法:
Stack<Bed> s = new Stack<Bed>();
答案 2 :(得分:-1)
您应该将类Furniture的对象设为 -
Furniture f=new Furniture("queen","red");
这将执行以下操作:
1.创建名为f
的类Furniture的对象2.将f的大小设为女王,其颜色为红色。
现在如果你想打印这个对象的颜色,你应该这样称呼它:
System.out.println(f.getColor());
答案 3 :(得分:-2)
Stack在java.util中。你做peek()是在Stack类的构建方法。所以,你不能像s.peek()。getColor()那样调用。如果在任何类中定义了getColor()方法,则需要创建该类的对象,然后可以使用该类的方法。你得到Cannot find symbol
,因为java的Stack类中没有类似getColor()的方法。