类的java方法未定义
我试图在eclipse中运行一段代码,该代码使用一个名为getArea(对象)的方法。我现在得到一个错误,说
The method
getArea(ComparableRectangle)
is undefined for the typeRectangleTest
这是矩形测试的代码-
package geometry;
import java.awt.Rectangle;
public class RectangleTest extends Rectangle {
/**
*
*/
private static final long serialVersionUID = -3282103336310735942L;
public static void main(String args[]) {
ComparableRectangle rect01 = new ComparableRectangle(5, 4);
ComparableRectangle rect02 = new ComparableRectangle(6, 8);
System.out.println("Area: " + getArea(rect01));
}
}
这是可比矩形的代码
package geometry;
import java.awt.Rectangle;
public class ComparableRectangle extends Rectangle implements Comparable {
private int width;
private int height;
public ComparableRectangle(int w, int h) {
width = w;
height = h;
}
public double getArea(ComparableRectangle rect) {
return width*height;
}
public boolean compareTo(ComparableRectangle rect1, ComparableRectangle rect2) {
if(rect1.width == rect2.width && rect1.height == rect2.height) {
return true;
}
else {
return false;
}
}
@Override
public int compareTo(Object o) {
// TODO Auto-generated method stub
return 0;
}
}
如何澄清rect01是一个可比较的矩形
# 1 楼答案
您误解了方法及其参数的工作原理
您需要某种方法将该方法与它应该被调用的某个对象结合起来。目前,可以使用对象作为参数,但这是不正确的
你应该通过写作把目的和方法结合起来
因此,您应该像这样调用该方法
并从方法中删除该参数
参数可用于为方法提供途中的附加信息。一个很好的例子是
compareTo
方法,它应该比较当前实例和给定实例。打个电话看起来像方法签名是
请注意,它只有一个参数,因为当前实例对该方法是隐式已知的(
this
关键字)笔记
不需要额外的定制
compareTo
方法,顺便说一句,它应该被命名为compare
,应该是static
,因为它不绑定到任何实例还要注意,您的自定义
compareTo
方法是而不是比较。它只返回相同的或不相同的。但是对于一个订单,你需要小于,大于,等于。因此,您的方法不定义顺序