我有一个类Mouse
,它扩展了类Mammal
。在Mouse
中,我有一个静态方法,它接收ArrayList
Mouse
个public static void mate(ArrayList<Mouse> mice)
个对象的参数,如下所示:
if((mice.get(i).getIsMale ^ mice.get(j).getIsMale) && (mice.get(i).getAge > 1 ) && (mice.get(j).getAge > 1 ) )
//if either mouse is male but not both and if both are older than 1 day
在这个静态方法中,我有这行代码:
getIsMale
其中getAge
和i
是超类Mammal中定义的方法,而j
和mate
是我在静态getIsMale
方法中使用的变量。
我从上面一行的编译器中得到4个错误:找不到符号。每个getAge
一个,每个{{1}}
我很感激任何(快速)的帮助。我必须提交这项任务并进入睡眠状态。谢谢!
答案 0 :(得分:2)
快速回答(:-P):您必须添加括号,使其为getIsMale()
和getAge()
。必须使用括号在Java中调用所有函数。
样式注释:布尔getter通常应命名为isXXX
,而不是getXXX
,因此male
getter应命名为isMale
,而不是getIsMale
。< / p>
答案 1 :(得分:2)
这是你的代码:
if ((mice.get(i).getIsMale ^ mice.get(j).getIsMale) &&
(mice.get(i).getAge > 1 ) &&
(mice.get(j).getAge > 1 )) {
// ...
}
这是写的方式,你说“给我字段getIsMale
的价值”等等。 getAge
和getIsMale
不是字段:它们是方法。所以你必须调用:
if ((mice.get(i).getIsMale() ^ mice.get(j).getIsMale()) &&
(mice.get(i).getAge() > 1 ) &&
(mice.get(j).getAge() > 1 )) {
// ...
}
(Java编译器说“找不到符号”而不是“它的字段”的原因是字段名称和方法名称在不同的名称空间中。如果你愿意,你可以编写一个既有名为foo
的字段和一个名为foo
的方法。所以......编译器告诉你它看到的错误,而不是试图猜测你可能实际意味着什么。)
小点:JavaBeans约定说布尔属性的getter应该被称为isXxx
而不是getXxx
。您应该将getIsMale()
重命名为isMale()
。